2015-10-19 23 views
0

程序中的循環似乎至少執行一次,即使沒有發生子字符串。爲什麼是這樣?如何使用find()循環查找字符串C++

編輯:好的,謝謝彌敦道,這就是我想要的

#include <iostream> 
#include <string> 

using namespace std; 

int countSubstrings(const string& original_string, const string& substr) { 
    int number_of_ocurrences = 0; 
    int i = 0; 
    for (i = original_string.find(original_string, 0); i != string::npos; 
    i = original_string.find(substr, i)) { 
     number_of_ocurrences++; 
     i++; 
    } 
    return number_of_ocurrences; 
} 

int main() { 
    string input; 
    while (1) { 
     cout << "Enter a a line of text: "; 
     getline(cin, input, '\n'); 
     cout << '\n'; 
     cout << "Number of ocurrences of the word needle: "; 
     cout << countSubstrings(input, "needle") << '\n'; 
    } 
} 

回答

0

最初,當你在for循環設置i你有

original_string.find(original_string, 0) 

那麼,你是爲自己搜索的字符串,它會發現。我相信你打算有

original_string.find(substr, 0) 
相關問題