2012-10-08 138 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; }