如何在C++中查找字符串中出现的字符串?
这是场景.
string base_string = "BF;1;2;3;FF;10;20;30;BF;11;;22;33;FF;100;200;300;BF;110;;220;330;FF;1000;2000;3000";
string to_find_occurances_of = "BF";
Run Code Online (Sandbox Code Playgroud)
Set*_*gie 20
int occurrences = 0;
string::size_type start = 0;
while ((start = base_string.find(to_find_occurrences_of, start)) != string::npos) {
++occurrences;
start += to_find_occurrences_of.length(); // see the note
}
Run Code Online (Sandbox Code Playgroud)
string::find获取一个字符串在调用对象中查找(在此重载中)一个字符位置,在该位置开始查找,并返回字符串出现的位置,或者string::npos如果找不到该字符串.
变量start从0开始(第一个字符),在循环的条件下,您可以start用来告诉从find哪里开始查找,然后分配返回值findto start.增加发生次数; 现在,它start保持字符串的位置,你可以跳过to_find_occurrences_of.length()1个字符并重新开始查找.
to_find_occurrences_of包含重复的字符序列,则start += to_find_occurrences_of.length()可能会跳过某些事件.例如,如果base_string是"ffff"和to_find_occurrences_of是"ff",然后如果你只加2次出现的将被计算to_find_occurrences_of.length()到start.如果你想避免这种情况,可以添加1而不是to_find_occurrences_of.length()to start,在这个例子中,将计算3次,而不是2次.