2015-10-19 274 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)