我的递归方法存在一个愚蠢的问题,该问题应该使从用户那里收集的字符串反向。它似乎正在删除第一个字符。因此,如果我输入“ Hello,World!”我收到“!dlorW,olle”
另外,请原谅我代码的笨拙。这是我的第一个真正具有挑战性的课程,并尽我所能保持代码干净。
从用户那里收集输入
//Reverse String
if (userInput == 1)
{
//Declare variables
string userString;
//Get string from the user
cout << "\nPlease enter the text that you would like to be printed in reverse " << endl;
cin.ignore();
getline(cin, userString);
//Display reverse string to the user
cout << "\nHere's your text in reverse order: " << endl;
reverseString(userString);
}
reverseString函数
void reverseString(string stringIn)
{
if (stringIn.length() == 0)
{
cout << endl;
return;
}
else
{
cout << stringIn[stringIn.length() - 1];
reverseString(stringIn.substr(0, stringIn.length() - 1));
}
}
答案 0 :(得分:3)
您的反向算法很好,但是问题在于cin.ignore();
这行,因为.ignore
的默认n值为1
,因此它只是自动丢弃输入的第一个字符字符串。