C++中,定义string类型后,使用字符串数组赋值,但是最后输出时候,不能直接cout<<字符串?

有一个未找到答案的问题,为什么最后输出时候cout<<b无法输出,必须要转换成字符串数组形式才能输出?

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

你的代码里b字符串都没有分配内存,通过下标对其赋值,其行为是UB(Undefined Behaviour)

b[i]=a[i]+a[i+1];这个是两个字符的ascii编码相加,这是要做什么?
字符的ascii编码最大是255(英文字符范围是32到127),两个字符的ascii编码相加超过255或者127就会显示不正确

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

要确定是没输出还是输出的东西你看不到,可以前后加个引号看下到底有没有打印东西

你这问题问的不完整,起码应该把错误信息贴出来。

先看报错信息,根据报错信息去解决问题