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*,你不能使用==运算符比较那些类型(=文本)的内容,你必须使用类似的东西strcmp或std::string类.
使用==on char*比较变量的地址,而不是内容.