我是一个初学者,我一直在阅读一本关于C++的书,并且我正在写一篇关于函数的章节。我写了一个反转字符串,将它的一个副本返回给main并输出它。从C++函数返回一个字符串
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;
}
以上似乎工作。
string input="Test string";
到:当我改变下面的代码出现该问题
string input;
cin>>input;
此更改后,反向函数返回,而不是整个字符串只有第一输入的单词的反向。我无法弄清楚我错在哪里。
最后,有没有一种更优雅的方式来做到这一点,通过使用引用,而不做一个输入的副本,以便输入变量本身被修改?
你的反向函数有一个bug。你应该使用'i> 0'作为'for'的条件。在最后一次迭代'i == 0'和'j == input.length()'导致'reverse [input.length()] = input [-1]',这两者都超出了界限。 – IronMensan