我对编程非常陌生。我的问题可能很愚蠢,但是如果有人可以指导我,这将是有帮助的。

请在下面查看我的代码:

#include <iostream>
#include <string>
using namespace std;

    int main()
    {
        cout << "you have choose to Reverse the text" << endl;

        string inputstring;
        string outputstring;

        cout << "Enter the string you want to reverse" << endl;
        getline(cin, inputstring);
        int n = inputstring.length();

        for (int i = 0; i < n; i++)
        {
            outputstring[i] = inputstring[n - 1 - i]; // problem in this line
        }
}

直到这里它可以正常工作inputstring[n - 1 - i],但是当我尝试将其值分配给outputstring时。我出错了。

最佳答案

outputstring为空,因此您可以在此处进行访问:

outputstring[i] = inputstring[n - 1 - i];

您必须确保进入循环时outputstring的长度至少为n。有多种方法可以实现这一目标。

一种解决方案是在读取n之后以inputstring大小创建它。在这里,我们用*创建它:
std::string outputstring(n, '*');

您还可以在创建后调整字符串的大小:
outputstring.resize(n);

现在,您可以在outputstring[N]范围内访问N[0, n)。这使您的循环有效。参见this working example

另外,您可以考虑就地反转inputstring。请注意,在实际代码中,可以使用std::reverse轻松完成此操作:
std::reverse(inputstring.begin(), inputstring.end());

09-07 09:43