我正在编写一个程序,用户可以在其中传入-e或-n等选项作为命令行参数。但是以下if循环由于某种原因不起作用。我正在尝试运行该程序:./ a.out -e test.html其中test.html是我正在解析的文件名:
int main(int argc, char** argv) {
ifstream inf;
if(argv[1] == "-e")
cout << "do somethin" << endl;
else
cout << "do something different" << endl;
return 0;
}
答案 0 :(得分:1)
将第一行更改为:
int main(int argc, char* argv[])
我认为你的代码是更大的一部分。但如果您不确定,这里是完整的代码......
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char* argv[]) {
if(argv[1] == "-e")
cout << "do somethin" << endl;
else
cout << "do something different" << endl;
return 0;
}
答案 1 :(得分:1)
您正在不正确地比较2个字符串。改变你的if()
if(argv[1] == "-e")
到
if (strcmp(argv[1], "-e") == 0) {
一定要
#include <string.h>
注意:虽然您的代码是C ++ cout << ...
,但argv [1]不是std:string,而是s / b a const char *
。因此strcmp()
需要将其直接与引用的字符串进行比较。或者你可以:
#include <string>
if (std::string(argv[1]) == "-e") { ...