c++ - 检查输入是否等于数组中存在的值?

标签 c++ arrays cin

我想检查 input 是否等于数组中的任何选项。 我该怎么做?我可以不使用很多 || 运算符就可以做到吗?

    //check if any input in herp[] was entered
    string input;
    string herp[2] = {"Merp", "Derp"}
    cin >> input;
    if (input == "connect "+herp[0]||"connect "+herp[1]) {
        cout << "poopie" << endl;
    }

最佳答案

使用std::find :

#include <algorithm>

if (std::find(std::begin(herp), std::end(herp), input) != std::end(herp)) {
    cout << "found it!";
}

此外,在 C++11 中,std::any_of已添加。您将需要一个谓词函数,此处为 lambda 形式:

if (std::any_of(std::begin(herp), std::end(herp),
    [&input](const std::string& str) { return str == input; })) {
    cout << "found it!";
}

我还建议您不要使用原始数组,而是使用 std::vectorstd::array。它是否在同一个函数中可能并不重要,但是当您传递 C 数组时,它们会退化为指针,然后事情很快就会变得一团糟。

关于c++ - 检查输入是否等于数组中存在的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18880036/

相关文章:

c++ - 如何将字符串添加到字符串流?

c++ - 为什么我用了std::future::get还要加入线程?

arrays - 在 TypeScript/Angular2 中将 Int 数组转换为枚举

jquery - 将新的键值对推送到 json

c++ - 尝试制作一个 while 循环,减去一个数字直到达到所需值,如果减法超过所需值,则显示并停止

c++ - std::cin 上的 std::getline

c# - .NET 进程外服务器的#import 问题

c++ - 默认纯虚拟实现 C++

javascript - 如果不等于值,如何遍历推送数组?

c++ - 读取一系列单词以将它们添加到 vector 中