文字列で一連の検索を行っていますが、行のどこかで文字列の 1 つが失われ、一連の検索が失敗するはずです。
位置が 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