c++程序运行时出现string subscript out of range

#include
using namespace std;
int main()
{
string s;
for (int i = 8; i >= 0; i--)
s[i] = i;
for (int j = 0; j < s.size(); j++)
cout << s[j] << " ";
cout << endl;
system("pause");
}
这个程序运行时出现错误string subscript out of range,为何?

溢出
你对string s未初始化,如果要对s进行操作,需对s进行初始化,给其分配相应的存储空间

string虽然是动态内存,但你没插入内容,它并不会分配八个空间。所有下标操作就会有问题。你需要先让它分配这么多空间。

s没有分配任何空间 所有赋值错误

你对string s未初始化,如果要对s进行操作,需对s进行初始化,给其分配相应的存储空间

要对string变量赋值,分配内存空间。错误提示就是使用变量时内存溢出。内存不足,所以初始化很重要。

string s;
->
string s = " ";

 string s;
->
string s = "        ";

要先对string s初始化

没有分配空间。你可以先分配空间。或者:
s += i \ s.append(i);

1.如果你的程序里只有#include,那么(1)string s-->string s[8],你后面用的是一个数组(2)C++里string型复制是使用s[0]=string("0");,所以你的s[i]=i;这句要改!(3)s.size() 也不对。最后的程序大概是下面的东东,C++里int和string转换较为复杂

 #include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
    string s[9];
    for(int i=8;i>=0;i--)
    {
        stringstream ss;
        ss<<i;
        ss>>s[i];
    }
    for(int j=0;j<9 ;j++)
    cout<<s[j]<<" ";
    return 0;
}

错误很多,最大的错误是string里添加字符不是用s[i] = i;
可以char c = '0' + i; s += c; 即可
以下是更正后的代码:

#include <iostream>
#include <string>
using namespace std;

int main() {
string s;
for (int i = 8; i >= 0; i--) {
    char c = '0' + i;
    s += c;
}
for (int j = 0; j < s.size(); j++)
    cout << s[j] << " ";
cout << endl;
return 0;
}