C++ switch 语句,使用命令行参数

标签 c++ switch-statement command-line-arguments

我正在尝试使用 switch 语句来启动函数调用。需要在来自命令行参数的参数中传递到 switch 语句的值,这意味着它存储在 argv[] 中。在我的例子中,已知此参数存储在 argv[5] 中。我的问题是我不知道如何正确转换或存储在 argv[5] 中找到的值,以便它可以被 switch 语句读取。我尝试使用 char*、char[] 和 string 作为我的变量“verbosity”的数据类型

我不断收到的错误是:语句需要整数类型的表达式('char *' 无效) 开关(冗长) ^ ~~~~~~~~~

而我的代码如下:

char* verbosity = argv[5];
cout << endl << verbosity;

switch(verbosity)
{
case 'vlow':
{
   vlow();//calls vlow function
   break;
}
case 'vmed':
{
   vmed();//calls vmed function
   break;
}
case 'vhigh':
{
   vhigh();//calls vhigh function
   break;
}
default:
   break;
}

我应该使用某种格式将字符串从 argv[] 传递到我的 switch 语句吗?

最佳答案

'vlow' 是一个 multicharacter literal ,不是字符串文字。

要比较 C 风格的字符串,请像这样使用 std::strcmp:

if (std::strcmp(verbosity, "vlow") == 0)
{
   //process
}

注意使用带双引号的 "vlow"

关于C++ switch 语句,使用命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25615310/

相关文章:

c++ - 使用经典终端和gcc/g++编译QT Creator项目

c++ - Qt Json 解析 C++

Python argparse : default argument stored as string, 未列出

kubernetes - 调用 kubectl cp 命令时如何使用 tar 命令选项

scala - 为什么将scala编译器参数传递给我的程序?

c++ - boost::asio -- asio_handler_deallocate 在 io_service::~io_service() 中调用,在 io_service::stop() 之后

c++ - 在 boost::python 的 add_property 中使用 c++11 lambda 作为访问函数(get_signature 因 lambda 而失败)

swift - 你能同时进行模式匹配和解包一个包含可选值的元组吗?

php - 从数组在 php 中生成开关案例?

javascript - 打开和关闭网站上的声音