string name;
strarray[] = ["Jack", "Tom" , "Jill"]
if(name == strarray)
{
//implementation here
}
この比較を機能させるにはどうすればよいですか
1 つは文字列で、もう 1 つは配列文字列であるため、ここでエラーが発生します。
string name;
strarray[] = ["Jack", "Tom" , "Jill"]
if(name == strarray)
{
//implementation here
}
この比較を機能させるにはどうすればよいですか
1 つは文字列で、もう 1 つは配列文字列であるため、ここでエラーが発生します。
標準ライブラリには、find
まさにこれを行う関数が呼び出されています: (<algorithm>
ヘッダーを含めます)
std::string strarray[] = {"Jack", "Tom" , "Jill"};
if (std::find(strarray, strarray + 3, name) != strarray + 3) {
// implementation here
}
使用できますstd::find()
:
if (std::end(strarray) != std::find(std::begin(strarray), std::end(strarray), name)) {
// implementation goes here
}
std::begin()
std::end()
C++ 2011 の新機能ですが、簡単に実装できます。
template <typename T, int Size> T* begin(T (&array)[Size]) { return array; }
template <typename T, int Size> T* end(T (&array)[Size]) { return array + Size; }
bool flag=false;
string name;
strarray[] = ["Jack", "Tom" , "Jill"]
//How do I make this comparison work
//I am getting an error here bc one is a string and one is an array string
for(int i=0;i<3;i++)
{
if(name == strarray[i])
{
flag=true;
break;
}
}
if(flag)
//implementation here :)