为什么空字符串可以在C ++中输出索引0元素

时间:2014-10-11 03:30:47

标签: c++

#include<iostream>
#include<string>

using std::string;
using std::cout;
using std::endl;

int main()
{
    string s;
    cout << s.size() << endl;
    cout << s[0] << endl;  //output empty line
    return 0;
}

由于 s 是一个空字符串,为什么它有 s [0] 元素?在我看来,它应该得到一个运行时错误。这是一个约定还是其他什么?

1 个答案:

答案 0 :(得分:4)

您可以访问s[n],其中n的长度为s,这是一项特殊规则。结果是一个空字符(由初始化字符类型的值产生的值)并尝试修改它会导致未定义的行为。