std :: string find是否要求pos小于字符串大小?

Adr*_*ish 2 c++ string stl stdstring

只需阅读21.3.6.1 basic_string :: find - 并且没有提到pos参数在字符串本身的范围内.

21.3.6.1 basic_string :: find

size_type find(const basic_string&str,size_type pos = 0)const;

1效果:如果可能,确定最低位置xpos,以便以下两个条件获得:

- pos <= xpos和xpos + str.size()<= size();

- at(xpos + I)== str.at(I)表示str控制的字符串的所有元素.

2返回:如果函数可以为xpos确定这样的值,则返回xpos.否则,返回npos.

我正确读到这个?

tem*_*def 6

规范的措辞不要求pos小于字符串的长度.如果pos大于字符串的长度,则条件(1)的第一部分不能满足,因为如果pos <= xpos,则xpos + str.size() <= size()永远不能为真.因此,通过第(2)款,函数将返回npos.因此,如果索引超出范围,则函数的行为仍然可以很好地定义.

希望这可以帮助!