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)
在此更改之后,反向函数仅返回第一个输入字的反转,而不是整个字符串.我无法弄清楚我哪里出错了.
最后,是否有更优雅的方法通过使用引用来做到这一点,而无需复制输入,以便输入变量本身被修改?
问题在于cin.它会在读取第一个空格字符后停止读取.
请参阅本教程的"cin and strings"部分:http://www.cplusplus.com/doc/tutorial/basic_io/
你可以getline(cin, input);用来做你想做的事.