提问者:小点点

交换字符串(字符串下标超出范围错误)


我想做一个程序,在不使用任何内置函数的情况下,将一个字符串分配给另一个反向字符串,但我得到了这个错误,我该如何解决它。图像

#include <iostream>

using namespace std;
int main()
{
    string a, b;
    
    cin >> a;
    for (int i = 0; i < a.size(); i++)
    {
        b[i] = a[a.size() - 1 - i];
    }
    cout << b;

}

共3个答案

匿名用户

更改此

b[i] = a[a.size() - 1 - i];

对此

b += a[a.size() - 1 - i];

当您使用时,字符串(和向量)不会自动调整它们的大小。如果字符串的大小为零,则需要使用或类似的方法向字符串中添加字符。

匿名用户

代码没有为字符串分配空间,您的代码假定b具有作为大小。在循环之前插入语句

完整代码:

#include <iostream>

using namespace std;
int main()
{
    string a, b;
    
    cin >> a;
    b.resize(a.size())
    for (int i = 0; i < a.size(); i++)
    {
        b[i] = a[a.size() - 1 - i];
    }
    cout << b;

}

匿名用户

用以下代码替换您的代码:

#include <iostream>

using namespace std;
int main()
{
  string a="", b="";

cin >> a;
for (int i = 0; i < a.size(); i++)
{
    b+= a[a.size() - 1 - i];
}
cout << b;

return 0;
}