我正在尝试编写一个程序来反转字符串。我使用了以下代码,但不幸的是它没有用。我有点困惑为什么会这样。
这是我的代码:
#include <string>
#include <iostream>
using namespace std;
int main()
{
string InputString = "Hello";
string OutputString;
int length;
length = InputString.length();
for (int i=length-1, j=0; i >=0, j<length; i--, j++)
OutputString[j] = InputString[i];
cout << "The reverse string of " << InputString << " is "
<< OutputString << ".\n";
return 0;
}
我的输出是: Hello 的反串是.
最佳答案
问题并不完全如您所想。就是OutputString
是空的,对它的任何索引都将越界并导致未定义的行为。
你可以改为做类似的事情
OutputString += InputString[i];
将字符附加到字符串。
另外,循环条件i >=0, j<length
也不会像你想的那样工作。您使用的是逗号表达式,所以同时 i >= 0
和 j<length
将被评估,只有 j<length
的结果将会被使用。您可能想在那里使用逻辑与运算符:i >=0 && j<length
.
关于c++ - 我可以将单个字符分配给 C++ 中的字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40267205/