我试图在不区分大小写的情况下部分匹配两个字符串。我不想使用 boost 库,因为大多数人的编译器中没有它们。我尝试了标准 c++ 库中的 .find() ,但它只检查用户输入的字符串是否在已经存在的字符串的第一个单词中。比如,如果我有一个名为 Harry_Potter_Goblet 的 DVD,如果我搜索“goblet”或“Goblet”,程序不会显示 Harry_Potter_Goblet 作为结果,只有当我对“Harry”进行区分大小写的搜索时,结果才会显示匹配。我在这里做错了什么?这是我的代码。
user2060964
问问题
327 次
1 回答
3
定义一个不区分大小写的字符比较函数:
#include <cctype>
bool case_insensitive_comp(char lhs, char rhs)
{
return std::toupper(lhs) == std::toupper(rhs);
}
然后,使用std::search在较大字符串中查找子字符串。
#include <algorithm>
....
std::string s1="Harry_Potter_Goblet";
std::string s2 = "goblet";
bool found = std::search(s1.begin(), s1.end(), s2.begin(), s2.end(), case_insensitive_comp) != s1.end();
于 2013-02-11T19:53:05.040 回答