为什么这个用于反转字符串的代码在C ++中不起作用?

时间:2014-02-26 12:58:53

标签: c++

string binary = "12345";
string binary2 = "";
size = binary.size() - 1;
for (i = size; i >= 0; i--)
{
    binary2[size - i] = binary[i];
}
cout << binary2;

我在运行时不断收到下标错误。但是,我不知道问题是什么。如果可能的话,我将不胜感激。

3 个答案:

答案 0 :(得分:8)

binary2为空。它没有任何字符。使用[]访问字符并不会奇迹般地创建尚不存在的字符:它只会更改现有字符的值。您正在尝试更改不存在的字符的值。

您可以将binary2初始化为" ",如下所示:

string binary = "12345";
string binary2(binary.size(), ' ');
// now your loop

或者你可以正确地进行字符串反转:

string binary = "12345";
string binary2(binary.rbegin(), binary.rend());

答案 1 :(得分:2)

首先,你的binary2字符串为空。这可以通过附加到它来修复。 然而,一点点的搜索让我得到了格雷格罗杰斯在这里找到的以下答案:https://stackoverflow.com/a/198210/2299061

#include <algorithm>
std::reverse(str.begin(), str.end());

答案 2 :(得分:0)

字符串binary2 = ""应更改为字符串binary2 = " ";