C++子字符串搜索 - 跳入C++
C++ substring searching - JUMPING INTO C++
我正在读Alex Allain的"Jumping Into C++"。我正在讨论字符串和搜索字符串的一章,但我真的不明白这个 for 循环。有人请向我解释这是如何工作的。谢谢。
for ( i = input.find( "cat", 0 ); i != string::npos; i = input.find( "cat", i ) )
{
cat_appearances++;
i++; // Move past the last discovered instance to avoid
// finding same string again
}
cout << "The word cat appears " << cat_appearances << " in the string
" << '"' << input << '"';
}
它具有与每个for
循环相同的结构:
for (initialise once; compare before each iteration; post iteration)
但通常你会看到这样的东西
for (int i = 0; i < 5; i++)
即:初始化i = 0
一次,然后在循环的每次迭代之前检查是否i < 5
,然后在之后执行i++
。
相反,你的初始化i
find("cat", 0)
的结果:也就是说,它在字符串input
中找到"cat"的第一个出现。
在每个循环之前,它会检查该i != std::string::npos
;也就是说,它检查以确保我们确实在input
中找到了"cat"的出现,因为如果没有找到出现find
,它将返回std::string::npos
。
在每个循环结束时,它将i = input.find("cat", i)
,这将再次搜索从我们当前位置开始出现的"cat"。
实际循环本身只是计算发生次数。
相关文章:
- C++中的素数生成器(alex allain跳到C++中)
- C++将浮点指针值舍入为小数位数
- 不确定要在我的main中放入什么才能使我的代码正常工作
- Boost::posix_time::ptime舍入到给定的分钟数
- 无论我使用什么,我的输入都会被跳过
- 浮点定向舍入和优化
- C++ If/Else 语句被跳过
- 为什么输出精度没有正确舍入?
- 弄清楚如何在C++中将整数读入 ASCII
- 将一系列整数放入类的最佳方法是什么?
- 可以读入进程内存的最大块大小是多少?
- 使用设置精度时如何阻止数字向上舍入?
- 转换器练习:跳过 if 语句和 if 语句
- 如何在 c++ 中比较 2 个链表并将匹配的数据放入另一个链表中
- C++ cin.ignore() 跳过循环
- 具有全局定义变量的递归比没有全局定义变量的递归函数获得更多的堆栈.为什么?(跳入C++)
- C++子字符串搜索 - 跳入C++
- 无需 goto 即可跳入和跳出循环的更好方法
- 将文本文件的内容一个字符一个字符地读入矢量,不跳过空白或新行
- 将数字文件读入数组,同时每1026个条目跳过前两个值