C++ 命令行参数比较

标签 c++ command-line-arguments

我正在对 C++ 命令行传递的参数进行一些验证,但遇到了一些困难。

我是这样做的

./a.exe inputfile.txt outputfile.txt 16 flush_left

我正在尝试像这样进行验证

if(argv[4] == "flush_left" || argv[4] == "flush_justify" || argv[4] == "flush_right"){

而且它没有按计划进行。虽然我不明白为什么这行不通。从我读过和看到的一切来看,应该没问题

最佳答案

尝试:

std::string argv4 = argv[4];
if(argv4 == "flush_left" || argv4 == "flush_justify" || argv4 == "flush_right"){
  //...
}

或(未经测试):

if( argc >=4 && (!strcmp(argv[4],"flush_left")  || !strcmp(argv[4],"flush_justify") || !strcmp(argv[4],"flush_right")) ) {
  //...
}

argv[4] 的类型为 char*,而字符串文字的类型为 const char*,您无法使用 == 运算符,您将不得不使用类似 strcmpstd::string 类的东西。

char* 上使用 == 比较变量的地址,而不是内容。

关于C++ 命令行参数比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3648620/

相关文章:

c++ - nullptr 右值如何

c++ - 是否有用于指定 double 的数字后缀?

c - 正确解析 C 中的命令行参数

java - 如何包含 java 程序的命令行 Gradle 构建脚本

C++ 函数错误——无法将大括号括起来的初始值设定项列表转换为 char*

c++ - 如何正确退出可能正在等待 std::condition_variable 的 std::thread?

c++ - ITK: 在执行 HelloWorld Example 时找不到 ITKCommon-x.xx.dll

linux - 如何处理 shell 脚本的命令行参数中的特殊字符

linux - 什么是 Linux test -a 命令测试?

python - 如何使用 argparse 在 python 中添加多个参数选项?