作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
如何在 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";
最佳答案
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
}
string::find
获取要在调用对象中查找的字符串和(在此重载中)开始查找的字符位置,并返回字符串出现的位置,或 string::npos
如果找不到字符串。
变量 start
从 0(第一个字符)开始,在循环条件下,您使用 start
告诉 find
在哪里开始查找,然后将 find
的返回值分配给 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()
添加到
start
,在该示例中,将计算 3 次而不是 2 次。
关于c++ - 如何在 C++ 中查找字符串中出现的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8614139/
我是一名优秀的程序员,十分优秀!