Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++中的字符串没有没有边界的异或/错误吗?_C++_String_C++11 - Fatal编程技术网

C++中的字符串没有没有边界的异或/错误吗?

C++中的字符串没有没有边界的异或/错误吗?,c++,string,c++11,C++,String,C++11,这段代码没有给出任何错误。这是否意味着C++中的字符串数据类型也不象数组一样有界?< p>参见,它将在错误上抛出一个STD:OutOfOfLealEngress。不检查边界 同样的,对于提供随机访问STD::数组,STD::vector,STD::DeQ:ST::MAP,STD::unOrdEdjMmap:通常,在C++中,你应该总是确保没有超出范围的访问发生。这使得程序具有更高的性能。但在某些特定情况下,通过try-and-catch使用异常处理可能会有所帮助,从而牺牲一些性能。请参见,如果出

这段代码没有给出任何错误。这是否意味着C++中的字符串数据类型也不象数组一样有界?

< p>参见,它将在错误上抛出一个STD:OutOfOfLealEngress。不检查边界

同样的,对于提供随机访问STD::数组,STD::vector,STD::DeQ:ST::MAP,STD::unOrdEdjMmap:通常,在C++中,你应该总是确保没有超出范围的访问发生。这使得程序具有更高的性能。但在某些特定情况下,通过try-and-catch使用异常处理可能会有所帮助,从而牺牲一些性能。

请参见,如果出现错误,它将抛出std::out\u范围。不检查边界

同样的,对于提供随机访问STD::数组,STD::vector,STD::DeQ:ST::MAP,STD::unOrdEdjMmap:通常,在C++中,你应该总是确保没有超出范围的访问发生。这使得程序具有更高的性能。但在某些特定情况下,通过try-and-catch使用异常处理可能会有所帮助,从而牺牲一些性能。

您的代码具有未定义的行为

std::string::operator[]不执行任何绑定检查

另一方面,当您访问超出范围的数据时,std::string::at执行绑定检查并抛出std::out_of_range类型的异常

这是否意味着C++中的字符串数据类型也不象数组一样有界?

当然,std::string有边界。访问其内容的方式不同于是否执行绑定检查。

您的代码具有未定义的行为

std::string::operator[]不执行任何绑定检查

另一方面,当您访问超出范围的数据时,std::string::at执行绑定检查并抛出std::out_of_range类型的异常

这是否意味着C++中的字符串数据类型也不象数组一样有界?


当然,std::string有边界。您访问其内容的方式不同于是否执行绑定检查。

同样,[]运算符不检查绑定中使用的任何内容,如STL中的向量、贴图和集合?@AshishChourasia它的行为取决于容器。对于向量,它不检查任何内容;对于贴图,如果缺少元素,它会自动插入元素;对于集合,它不起作用。此外,更准确地说,大多数编译器的标准库实现都有一种打开边界检查的方法,[]操作符也不检查边界中使用的任何内容,如STL中的向量、映射和集合?@AshishChourasia它的行为取决于容器。对于向量,它不检查任何内容;对于贴图,如果缺少元素,它会自动插入元素;对于集合,它不起作用。而且,更准确地说,大多数编译器的标准库实现都有一种打开边界检查的方法。
string p="a";
cout<<p[4];