我正在对一个字符串进行一系列搜索,但在搜索过程中会有一个字符串被漏掉,导致我的搜索失败。
我原本以为一旦位置达到std::string::npos就会停止搜索,但实际上并不是这样。将std::string::npos传递给std::string.find似乎会重新从头开始搜索。
std::string str("frederick");
std::string::size_type pos = str.find("der",std::string::npos);
TS_ASSERT_EQUALS(pos, std::string::npos); // FAIL, 3 is returned
为什么它没有被认为是字符串的结尾?
更新: 意图是按顺序搜索一系列字符串,并在末尾检查结果。
pos = str.find(string1, pos)
pos = str.find(string2, pos)
pos = str.find(string3, pos)
if (pos != std:string::npos)
{ // All strings found