C++:阅读和从命令行
我读的命令行,看起来像这样的线路比较:C++:阅读和从命令行
"./test -C original.txt compressed.txt"
变量-C
也可以-D
(这是不相干的陈述他们意思)。
我想在我的代码中验证它是这两个选项之一,但我在使用代码中的argv[]
字符数组时遇到问题。
这里就是我想在我的if语句:
if((strcmp(av[1], "-C") == 0)||(strcmp(av[1], "-c") == 0))
我也试过直接比较值
if((av[1] == "-C") || (av[1] == "-c"))
如果您在C++中它能够更好地使用std::string
:
if((std::string(argv[1]) == "-C") || (std::string(argv[1]) == "-c"))
如果它仍然无法正常工作,请尝试打印该变量并查看它是否符合您的期望。
太棒了!这工作。非常感谢! –
@Lady_ari如果这个答案解决了你的问题,接受就是要走的路。如果你不知道我在说什么以及这个问答网站是如何工作的,那么查看[FAQ](http://stackoverflow.com/faq)应该是你的第一个动作。 –
如果main()
的原型是int main(int argc, char *argv[]);
,那么正确的方法来检查,如果第一个参数是不是‘-c’或‘-C’,而无需使用std::string
s是
if((strcmp(argv[1], "-C") == 0)||(strcmp(argv[1], "-c") == 0))
// do things
您可能需要#include <cstring>
要利用strcmp()
我做到了,但没有奏效。 我使用了'std :: string',所以它现在可以工作了 –
if((argv[1] == "-C") || (argv[1] == "-c"))
这不能将以argv [1]是指向字符的特定阵列至极包含第一个命令行参数工作。另一方面“-c”是一个指向特定其他字符的常量指针,它包含“-C”
所以这不会比较这些指针实际指向的值,它会比较两个阵列最有可能是不同的,在任何情况下,我可以想象...
你试过打印'AV [1]'? –
是的,它打印'-C',这是正确的 –
您是否尝试过打印'strcmp'的返回值? –