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