从主C++中解析参数

thi*_*zy4 1 c++ program-entry-point argv

可能重复:
C字符串 - 使用等式运算符==用于比较两个字符串是否相等

基本问题在这里.我正在用g ++编译这个程序并使用单个-r参数(./a.out -r)运行它,但是它不输出下面指定的cout语句.这段代码有什么问题吗?

#include <string>
using namespace std;

int main(int argc, char* argv[]) {

    if (argv[1] == "-r" ) {
        cout << "First arg is -r" << endl;
    }

    return 0;
}  
Run Code Online (Sandbox Code Playgroud)

Jon*_*Jon 6

你无法比较使用的字符串文字==,因为它的作用是比较指针(即内存地址,在这种情况下总是会有所不同).

改为使用strcmp或比较std::string对象:

if (strcmp(argv[1], "-r") == 0) { ... }
Run Code Online (Sandbox Code Playgroud)

要么

if (std::string(argv[1]) == "-r") { ... }
Run Code Online (Sandbox Code Playgroud)