我有
std::vector<std::string> vec;
std::string myString;
并且我需要使用不区分大小写 comaprisons 来确定myString
是否在vec
中。
我知道我可以用
find(vec.begin(), vec.end(), myString) != vec.end())
回答“myString 是否在 vec 中?”这个问题但这将进行区分大小写的比较。我需要不区分大小写的比较。
位置不重要,我只想知道myString是否在vec中。
最佳答案
你需要使用 std::tolower 和 std::find_if:
std::vector<std::string> vec = {"ALF", "B"};
std::string toSearch = "Alf";
auto itr = std::find_if(vec.begin(), vec.end(),
[&](auto &s) {
if ( s.size() != toSearch.size() )
return false;
for (size_t i = 0; i < s.size(); ++i)
if (::tolower(s[i]) == ::tolower(toSearch[i]))
return true;
return false;
}
);
if ( itr != vec.end()) {
std::cout << *itr << std::endl;
}
关于c++ - 在不区分大小写的字符串 vector 中查找字符串 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36494584/