c++ - 我可以将单个字符分配给 C++ 中的字符串吗?

标签 c++

我正在尝试编写一个程序来反转字符串。我使用了以下代码,但不幸的是它没有用。我有点困惑为什么会这样。

这是我的代码:

#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 >= 0j<length将被评估,只有 j<length 的结果将会被使用。您可能想在那里使用逻辑与运算符:i >=0 && j<length .

关于c++ - 我可以将单个字符分配给 C++ 中的字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40267205/

相关文章:

c++ - Cannot specify link libraries for target错误CMakeLists

c++ - 在 C++ 结构创建中执行更快

c++ - XCode 4.5.2 的 CRTP 错误 - 解析问题,预期的表达式

c++ - 模板函数作为模板类的友元

c++ - JSONCPP 合并链接错误

c++ - 如何删除/取消来自 tbb::flow::graph 的消息?

c++ - 修改结构的函数不会更新结构

c++ - 如何在编写模板模板函数时使用类型别名

c++ - LibQREncode qrcode 到 BMP

c++ - "cast"GL_R8 到 GL_BGRA