提问者:小点点

在什么情况下,带有大于字符串长度的计数参数的std::basic_string::find可能有用?


std::basic_string::find方法的签名之一是:

size_type find( const CharT* s, size_type pos, size_type count ) const;

参数如下:

职位 ; ; ; ;-开始搜索的职位

count-要搜索的子字符串的长度

s ;    ;    ;-指向要搜索的字符串的指针

此重载的方法行为描述如下:

查找等于范围[s,s+count]的第一个子字符串。此范围可能包含空字符。

我想知道在什么情况下有一个包含空字符的范围是有用的。 例如:

s.find("A", 0, 2);

这里,s对应于长度为1的字符串。 因为count为2,范围[s,s+count]包含一个空字符。这是什么意思?


共1个答案

匿名用户

有一个错误的前提,你没有拼写出来,但结合标题和问题它是:

空字符表示std::string的结尾。

这是不对的。 std::strings可以在任何位置包含空字符。 对于期望以空结尾的C字符串的函数,我们必须谨慎对待,但是find非常好,它明确地提醒您它也适用于一般情况。