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

use*_*568 -2 c++

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

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

Lig*_*ica 8

binary2是空的.它没有任何字符.访问字符[]不会神奇地创建尚不存在的字符:它只会更改现有字符的值.您正在尝试更改不存在的字符的值.

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

string binary = "12345";
string binary2(binary.size(), ' ');
// now your loop
Run Code Online (Sandbox Code Playgroud)

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

string binary = "12345";
string binary2(binary.rbegin(), binary.rend());
Run Code Online (Sandbox Code Playgroud)