请教为什么这个小程序什么也输出不了?

 #include <iostream>
#include <string>
#include <cstdlib>

using namespace std;

int main(){
    string z;
    for(int i=0;i<10;++i){
        z[i]='0'+i;
    }
    z[10]='\0';
    cout << z;

    return 0;
}

把string z 换成char z[11]

多少string赋个值
class string{
const char *a;
...
}
动态生成不代表你不用生成了,string默认实例化是个空字符串,z[i]相当于数组越界,用string得函数赋值
https://www.cnblogs.com/zhizhan/p/4876093.html

z.resize(20); 假设z最多存20个

 #include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
int main() {
    string z;
    z.resize(20);   //给z分配空间,不然string一开始是空字符串,用下标访问会越界
    for (int i = 0; i < 10; ++i) {
        z[i] = '0' + i;
    }
    z[10] = '\0';
    cout << z;

    return 0;
}

感觉你的代码会崩溃啊,参考一下楼上代码吧!