Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我们如何将这个if语句转换为一个";开关";_C++_If Statement_Switch Statement - Fatal编程技术网

C++ 我们如何将这个if语句转换为一个";开关";

C++ 我们如何将这个if语句转换为一个";开关";,c++,if-statement,switch-statement,C++,If Statement,Switch Statement,假设我们有以下if语句: if (arg.compare("abc") == 0) { ... } 如果我想将其转换为一个开关表单,以下是否正确 switch (arg) { case "arg.compare("abc") == 0: cout<<"statements the same"; break; } 开关(arg) { case“arg.compare(“abc”)==0:cout如果可能出现以下切换语句: switch (arg) { case arg.co

假设我们有以下
if语句

if (arg.compare("abc") == 0)
{
...
}
如果我想将其转换为一个
开关
表单,以下是否正确

switch (arg)
{
case "arg.compare("abc") == 0: cout<<"statements the same";
break;
}
开关(arg)
{

case“arg.compare(“abc”)==0:cout如果可能出现以下切换语句:

switch (arg)
{
    case arg.compare("abc1") == 0: cout << "statements the same1";
    break;
    case arg.compare("abc2") == 0: cout << "statements the same2";
    break;
}
开关(arg)
{

case arg.compare(“abc1”)==0:cout如果字符串集是静态已知的(在开发时,例如,因为它是一组已知的关键字或标识符),您可能希望使用类似的生成器

如果使用C++11进行编码,还可以使用匿名:


不可以。除非您有一个返回定义值或枚举值的函数,否则您不能。例如,对于“abc”,return 11您实际上是在尝试为不同的字符串添加大小写,还是只是想了解
switch/case
的工作原理?
if(arg.compare("abc1") == 0) cout << "statements the same1";
// no break is needed
else if(arg.compare("abc2") == 0) cout << "statements the same2";
// no break is needed
if(arg.compare("abc1") == 0)
{
    cout << "statements the same1";
}
else if(arg.compare("abc2") == 0)
{
    cout << "statements the same2";
}
  std::map<std::string, std::function<void(const std::string&)> 
   funmap = {
    { "abc", [&](const std::string& name) 
                { std::cout << name; } },
    { "cde", [&](const std::string& name) 
                { do_something_with(name); } },
   };
   auto it = funmap.find(somestring);
   if (it != funmap.end()) it->second(somestring);