C++中的字符串是否没有越界例外/错误?
string p="a";
cout<<p[4];
这段代码没有给出任何错误。这是否意味着 C++ 中的字符串数据类型也不受数组限制?
回答
您的代码具有未定义的行为。
std::string::operator[] 不执行任何边界检查。
std::string::at()另一方面,std::out_of_range当您访问越界数据时,执行边界检查并抛出类型异常。
这是否意味着 C++ 中的字符串“数据类型”也没有像数组一样有界?
当然std::string有界限。您访问其内容的方式是不同之处在于是否将执行绑定检查。