有条件地确定字符串是否是数组的一部分

Finding out if a string is part of an array conditionally

本文关键字:数组 一部分 是否是 字符串 有条件      更新时间:2023-10-16

这是我正在开发的一个基本的 c++ 控制台应用程序,只是为了在做一些更高级的事情之前进行测试。我想知道我将如何确定用户输入是否是我的 String 数组的一部分,带有 if 语句,这是到目前为止的代码......

#include <iostream>
#include <string>
using namespace std;
int main(){
    string array[] = {"1","2","3"};
    for(;;){
        cout << "Enter a random number";
        int randNum = 0;
        cin >> randNum;
        if(/* randNum is part of the array */)
        {
            //do something
        }
        else{
            //do something
        }
    }
    return 0;
}

首先,您显然想在阅读后检查您的输入:

if (cin >> randNum) {
     ...
}

接下来,我认为您需要对齐类型,即,如果您读取int您可能希望您的数组也包含int s:

int array[] = { 1, 2, 3 };

如果给出了这些,您可以像这样检查:

if (std::end(array) != std::find(std::begin(array), std::end(array), randNum)){
    ...
}

(如果不使用 C++ 2011,则需要其他方法来获取数组的开始和结束迭代器,但有很多方法,包括根据需要定义模板begin()end())。

如果你真的想根据一个std::string数组检查int,你需要一个谓词来检查intstd::string

您可以使用std::find来实现此目的,但是,您需要先将 randNum 转换为字符串 -

std::stringstream ss;
ss << randNum;
std::string to_check = ss.str();
if(std::find(array, array + 3, to_check) != (array + 3)) {
//Logic
} else {
//
}