反向函数的反向字符串删除第一个字符

时间:2019-05-02 21:14:35

标签: c++

我的递归方法存在一个愚蠢的问题,该问题应该使从用户那里收集的字符串反向。它似乎正在删除第一个字符。因此,如果我输入“ 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));

    }
}

1 个答案:

答案 0 :(得分:3)

您的反向算法很好,但是问题在于cin.ignore();这行,因为.ignore的默认n值为1,因此它只是自动丢弃输入的第一个字符字符串。