2012-10-08 179 views
-1
string name; 
strarray[] = ["Jack", "Tom" , "Jill"] 

if(name == strarray) 
{ 
    //implementation here 
} 

如何使這個比較工作你如何一個字符串比較字符串數組

我正在這裏一個錯誤,因爲一個是一個字符串,一個是一個數組的字符串。

+2

你期望什麼來比較? – chris

+0

這是什麼意思(在你的心中)一個字符串等於一個字符串數組? –

+0

你想看看字符串名是否是數組的元素?或者你想把所有的字符串結合起來,看看它們是否與名字相同?你正在比較兩種不同的東西,它們在嚴格意義上永遠不會是「平等的」(除非你有一個只有一個字符串的數組)。 – PherricOxide

回答

1
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 :) 
+1

如果這是他要做的,那麼使用['std :: find'](http://en.cppreference.com/w/cpp/algorithm/find)ie if(std :: find(strarray,strarray + 3,name)!= strarray + 3){/ * implementation here * /}' –

2

標準庫有一個名爲find函數正是這樣做的:(包括<algorithm>頭)

std::string strarray[] = {"Jack", "Tom" , "Jill"}; 

if (std::find(strarray, strarray + 3, name) != strarray + 3) { 
    // implementation here 
} 
2

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