我有一个字符串,如果字符串值匹配给定的单词集(比如 ape、eat、sleep、mango......),我想执行 if
语句
我能做到:-
if(name=="ape" || name=="eat".............)
有没有更简单的方法来做到这一点?
我只想使用 if-else。
最佳答案
Decalare 一个单词数组,然后使用标准算法 std::find
或 std::any_of
。
例如
const char * words[] =
{
"ape", "eat", "sleep", "mango"
};
if ( std::find( std::begin( words ), std::end( words ), name ) != std::end( words ) )
{
//...
}
如果您要声明一个排序数组,那么您可以使用标准算法 std::binary_search
。
这是一个演示程序
#include <iostream>
#include <string>
#include <iterator>
#include <algorithm>
int main()
{
const char * words[] =
{
"eat", "ape", "mango", "sleep"
};
std::string name( "mango" );
if ( std::binary_search( std::begin( words ), std::end( words ), name ) )
{
std::cout << name << " is a correct name\n";
}
return 0;
}
它的输出是
mango is a correct name
或者将单词放在标准容器中,例如 std::set
并使用容器的 find 方法。
关于c++ - 多个 if-else 测试的更简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58287145/