如何判断一个字符串是否包含另一个字符串

时间:2013-04-16 13:12:31

标签: c++ stl

我有一组字符串,然后是第二个字符串。我想迭代该集合并确定当前字符串是否包含在该第二个字符串中。是否有STL或其中任何一种包含的工具可以让我轻松工作?

#include <cctype>
#include <iostream>
#include <iomanip>
#include <set>
#include <list>
#include <map>
#include <vector>
#include <queue>
#include <string>

USECASE:

test1 . Add    ( 0, "hello" );
test1 . Add    ( 1, "world" );
test1 . Add    ( 2, "rld" );
test1 . Add    ( 3, "ell" );
test1 . Add    ( 4, "hell" );
printSet ( test1 . Search ( "hello world!" ) );
// 0, 1, 2, 3, 4
printSet ( test1 . Search ( "hEllo world!" ) );
// 1, 2

当然,我可以逐字逐句地比较它,逐个字符或者创建一些自动机,但是为什么要比实际上更难实现:)

2 个答案:

答案 0 :(得分:2)

您可以使用std::string::find进行搜索,并boost::bind将其std::for_each传递给boost::lambda,以便将结果与std::string::npos进行比较并计算出来> 您可以找到相关示例Here
另一个更直接的方法是创建自己的仿函数,它将在构造函数中使用字符串,在operator()(const std::string&)中搜索子字符串并计算npos'es

答案 1 :(得分:1)

您可以使用find_if

我希望这会有所帮助