我正在对 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*
,您无法使用 ==
运算符,您将不得不使用类似 strcmp
或 std::string
类的东西。
在 char*
上使用 ==
比较变量的地址,而不是内容。
关于C++ 命令行参数比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3648620/