thi*_*zy4 1 c++ program-entry-point argv
基本问题在这里.我正在用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)
你无法比较使用的字符串文字==,因为它的作用是比较指针(即内存地址,在这种情况下总是会有所不同).
改为使用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)