0

これは私が取り組んでいる基本的なc++コンソールアプリケーションであり、もう少し高度なことをする前にテストするためのものです。ユーザー入力が文字列配列の一部であるかどうかを確認する方法を知りたいのですが、ここでの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;

}
4

2 に答える 2

1

まず、読んだ後に入力を確認したいのは明らかです。

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

次に、型を整列させたいと思うでしょう。つまり、を読んだ場合、intおそらく配列にもints を含めたいと思うでしょう:

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

これらが指定されている場合は、次のように確認できます。

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

(C++ 2011 を使用しない場合は、配列の開始イテレータと終了イテレータを取得する別の方法が必要ですが、必要に応じてテンプレートを定義するなど、さまざまな方法がありますbegin()) end()

ints の配列に対してを本当にチェックしたい場合は、 aに対してstd::stringをチェックする述語が必要です。intstd::string

于 2012-10-15T23:37:31.667 に答える
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 {
//
}
于 2012-10-15T23:41:47.640 に答える