为什么这个c ++代码会提供这样的输出?

时间:2015-09-30 05:32:46

标签: c++

#include<bits/stdc++.h>
using namespace std;

string str ;
string STR ;

int main(){

    for(int I=0;I<6;I++)    /// 012345
        str[I] = I + '0'  ;

    for(int J=0;J<6;J++)    /// abcdef
        STR[J] = J + 'a' ;

    cout << str << "  " << STR << endl ; /// blank line !!!


    printf("%s\n",str.c_str()); /// abcdef
    printf("%s\n",STR.c_str()); /// abcdef

    return 0;
}

输出::

abcdef
abcdef

我期待::

012345 abcdef
012345
abcdef

1 个答案:

答案 0 :(得分:7)

您有未定义的行为

您声明的字符串为空,并且它们的索引将超出范围。

相反,你应该使用append成员函数或+= operator 将字符附加字符串。