我在一個字符串中進行一系列的搜索,並且沿着這一行的某個字符串將被錯過,並且我的搜索集合應該失敗。爲什麼std :: string.find(text,std :: string:npos)不返回npos?
我曾預料,一旦位置達到std :: string :: npos它會留在那裏,但它不會。路過的std :: string ::非營利組織爲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
傳遞-1(npos)作爲開始查找子字符串的位置的要點是什麼? – Gishu 2009-06-18 09:49:24
@Gishu我已經添加了一些示例代碼 – 2009-06-18 10:03:57
用g ++試過你的代碼,並且找到並返回npos。我認爲Charles Bailey是對的。 – mweerden 2009-06-18 10:17:31