我是一個初學者,我一直在閱讀一本關於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