1

我正在编写一个程序,用户可以在其中传递 -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;
}
4

2 回答 2

1

将第一行更改为:

int main(int argc, char* argv[])
  1. 它创建一个 argv 数组
  2. 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;
}
于 2013-05-24T03:08:08.167 回答
1

您不正确地比较了 2 个字符串。改变你的 if()

if(argv[1] == "-e")

if (strcmp(argv[1], "-e") == 0) {

务必

#include <string.h>

注意:虽然您的代码是 C++ cout << ...,但 argv[1] 不是 std:string,而是 s/ba const char *。因此strcmp()需要将其直接与带引号的字符串进行比较。或者,您可以:

#include <string>
if (std::string(argv[1]) == "-e")  { ...
于 2013-05-24T03:09:37.367 回答