string name;
strarray[] = ["Jack", "Tom" , "Jill"]
if(name == strarray)
{
//implementation here
}
如何使這個比較工作你如何一個字符串比較字符串數組
我正在這裏一個錯誤,因爲一個是一個字符串,一個是一個數組的字符串。
string name;
strarray[] = ["Jack", "Tom" , "Jill"]
if(name == strarray)
{
//implementation here
}
如何使這個比較工作你如何一個字符串比較字符串數組
我正在這裏一個錯誤,因爲一個是一個字符串,一個是一個數組的字符串。
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 :)
如果這是他要做的,那麼使用['std :: find'](http://en.cppreference.com/w/cpp/algorithm/find)ie if(std :: find(strarray,strarray + 3,name)!= strarray + 3){/ * implementation here * /}' –
標準庫有一個名爲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; }
你期望什麼來比較? – chris
這是什麼意思(在你的心中)一個字符串等於一個字符串數組? –
你想看看字符串名是否是數組的元素?或者你想把所有的字符串結合起來,看看它們是否與名字相同?你正在比較兩種不同的東西,它們在嚴格意義上永遠不會是「平等的」(除非你有一個只有一個字符串的數組)。 – PherricOxide