【发布时间】:2013-02-11 19:49:37
【问题描述】:
我正在尝试部分匹配两个不区分大小写的字符串。我不想使用 boost 库,因为大多数人的编译器中没有它们。我尝试了标准 c++ 库中的 .find() ,但它只检查用户输入的字符串是否在已经存在的字符串的第一个单词中。比如,如果我有一个名为 Harry_Potter_Goblet 的 DVD,如果我搜索“goblet”或“Goblet”,程序不会显示 Harry_Potter_Goblet 作为结果,只有当我对“Harry”进行区分大小写的搜索时,结果才会显示匹配。我在这里做错了什么?这是我的代码。
【问题讨论】:
-
您是否阅读
string::find的文档?它返回第一次出现的位置,所以当然您只能找到以查询字符串开头的标题。您正在将该位置 与 0 进行比较! -
@us2012 我知道,这就是为什么我要问除了 find() 是否有任何其他函数可以部分匹配两个字符串。
-
不过,您仍然没有阅读文档。
find()如果根本找不到字符串,则返回string::npos,因此您的条件应该是if (blah.find(foo) != string::npos),瞧,您正在匹配。对于“不区分大小写”部分,请参阅 juan 的回答。