c++ - 在另一个字符串中查找字符串的所有实例

标签 c++ string loops find

下面我有一段比较两个字符串的代码。

if (long.find(short) != string::npos) {
        cout << "FOUND";
}

这只会告诉我它是否在长字符串中找到了短字符串。但是我怎样才能找到所有的实例并告诉用户字符串的这些实例显示在哪里呢?

我想也许可以将其设为一个循环,但我在实现它时遇到了麻烦。

最佳答案

你可以做类似的事情

#include <iostream>
#include <string>

int main()
{
    std::string test = "we are searching for searching here";
    std::string str = "searching";
    std::string::size_type start = test.find(str); // find the first instance
    while(start != std::string::npos) // repeat for the rest
    {
        std::cout << "Found on pos: " << start << std::endl;
        start = test.find(str, start + 1);
    }
}

旁注:不要使用 longshort 作为字符串名称,因为它们是 C++ 保留关键字。

关于c++ - 在另一个字符串中查找字符串的所有实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30204358/

相关文章:

java - 使用单利公式计算Java的投资期限

html - 使用水平滚动的 div 布局(无表格)

c++ - 是可调用和模糊调用 : bug in either g++ or clang

c++ - 如何在g++中直接访问文本文件的某一部分?

java - 需要代码优化建议

android -\n 出现在字符串中不起作用

java - 如何巧妙地创建固定长度的空白字符串?

java - 使用嵌套循环根据数字陷入缩进空格

c++ - 如何为动态类型成员调用boost register_type函数

c++ - 默认赋值运算符是否对所有成员调用 operator=?