从c ++函数返回一个字符串

Zub*_*tta 1 c++ string words function

我是初学者,我一直在读一本关于C++的书,我正在写一个关于函数的章节.我写了一个来反转一个字符串,将它的副本返回给main并输出它.

string reverseInput(string input);

int main()
{
    string input="Test string";
    //cin>>input;
    cout<<reverseInput(input);
    return 0;
}

string reverseInput(string input)
{
    string reverse=input;
    int count=input.length();
    for(int i=input.length(), j=0; i>=0; i--, j++){
        reverse[j]=input[i-1];
    }
    return reverse;
}
Run Code Online (Sandbox Code Playgroud)

以上似乎都有效.更改以下代码时会发生此问题:

string input="Test string";
Run Code Online (Sandbox Code Playgroud)

至:

string input;
cin>>input;
Run Code Online (Sandbox Code Playgroud)

在此更改之后,反向函数仅返回第一个输入字的反转,而不是整个字符串.我无法弄清楚我哪里出错了.

最后,是否有更优雅的方法通过使用引用来做到这一点,而无需复制输入,以便输入变量本身被修改?

Pol*_*ial 7

问题在于cin.它会在读取第一个空格字符后停止读取.

请参阅本教程的"cin and strings"部分:http://www.cplusplus.com/doc/tutorial/basic_io/

你可以getline(cin, input);用来做你想做的事.