c++ - 在不区分大小写的字符串 vector 中查找字符串 C++

标签 c++ string vector find case

我有

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/

相关文章:

javascript - 输出文件中的换行符

c++ - 基于范围的大括号初始化器而不是非常量值?

c++ - 云的PCL注册

c - strtok() 作为 printf() 中的参数反向打印值

c++ - 帮忙解决这个问题吗?

c++ - 为什么此代码无法将 char 推回到 vector <char> 中?

r - 将数据帧的每一列乘以向量的对应值

c++ - 替换默认的 STL 分配器

c++ - std::vector<T>::iterator 可以只是 T* 吗?

c# - 如何在 C# 中连接整数和字符串?