我正在通過一本關於C++的書,它只是使用string::npos
來檢查字符位置是否存在於字符串中。不過,我不明白這個機制怎麼可能知道我指的是哪個字符串!這個特定的代碼正在計算一個子串的出現次數。string :: npos如何知道我指的是哪個字符串?
代碼:
for (int i=cats.find("cat",0);i!=string::npos;i=cats.find("cat",i)) {
++catCount;
++i;
}
我明白它正在啓動在字的第一次出現的環路,遞增計數器每經過,以避免兩次計數相同的子串,然後在端每個循環的計數器跳到子串的下一個出現位置。當計數器不存在作爲字符串的字符索引時,循環停止。
該字符串被稱爲貓雖然和「貓」沒有在「string :: npos」中找到,所以如何知道這是我甚至搜索的變量?這是否僅僅是因爲這是最後變量.find()
?
謝謝!
這只是一個常數,如果find不能找到它,它就會返回。 – chris
find()返回保存爲std :: string的靜態數據成員的值npos,如果找不到字符串。 – 0x499602D2
我假設「靜態數據成員」與其他OO語言中的意思相同,即如果從程序中的任何位置訪問相同的值,並且該對象的任何實例都不需要目前的價值被訪問和操縱? –