找出一个字符串是否有条件地成为数组的一部分

时间:2012-10-15 23:32:49

标签: c++ arrays string visual-studio-2010 if-statement

这是我正在处理的基本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;

}

2 个答案:

答案 0 :(得分:1)

首先,您明确要在阅读后检查输入:

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

接下来,我认为您需要调整类型,例如,如果您阅读int,您可能希望您的数组也包含int

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

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

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

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

如果您确实要针对int数组检查std::string,则需要一个谓词来检查intstd::string

答案 1 :(得分:0)

您可以使用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 {
//
}