C++命令行参数比较

Ano*_*ous 2 c++ command-line-arguments

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

我这样做

./a.exe inputfile.txt outputfile.txt 16 flush_left
Run Code Online (Sandbox Code Playgroud)

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

if(argv[4] == "flush_left" || argv[4] == "flush_justify" || argv[4] == "flush_right"){
Run Code Online (Sandbox Code Playgroud)

它没有按计划进行.虽然我没有看到为什么这不起作用.从我所阅读和看到的一切都应该没问题

sme*_*lin 12

尝试:

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

或(未经测试):

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

argv [4]有类型char*,字符串文字有类型const char*,你不能使用==运算符比较那些类型(=文本)的内容,你必须使用类似的东西strcmpstd::string类.

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

  • "strcmp/strncmp返回不匹配的字符数量" - 这是一个勇敢的断言.注意说明你的来源? (2认同)