我对编程非常陌生。我的问题可能很愚蠢,但是如果有人可以指导我,这将是有帮助的。
请在下面查看我的代码:
#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());