C++中string类字符串可以对其中某个下标元素赋值吗》?

例如string s="abc";
s[0]是'a'这是可以的。
那如果在s没有被初始化之前就对单个字符赋值难道是不可以的吗?
比如:string s;
s[0]='a';
这样编译器会提示string下标越界?只能先初始化吗?

需要初始化,如果没有初始化,s还没有分配空间,你访问下标就越界了。

你直接string s="abc";系统为s分配了空间,string字符串才可以看成char数组,
如果直接声明string s;
s[0]='a';
系统没有为字符串s分配空间,s=null,没法看成char数组吧。

    string s;   
    s[0] = 'd';

如果看 s 的空间大小。。s有 15个字节的空间。。。

<br>
图片说明

你如果对string对象进行赋值过,而且保证没有越界的话,是可以这样处理string对象的