将值传递给main(int,char**)

Jam*_*iil 0 c++ gcc visual-c++

我有一个程序显示ascii值和字母,但现在我修改程序只显示我正在寻找的西班牙字符.该程序被调用,是的,你得到它,"ascii".用户要做的是键入C:>asciiC:>ascii all显示所有ascii字符.要仅显示用户必须键入的西班牙语字符C:>ascii es.

为此我写了这个简单的程序

int main(int argc, char** argv) {
    if(argv[0] == "es"){
        abc::ascii_es();        
    }
    if(argv[0] == "all"){
        abc::ascii_all();
    }
    else
        abc::ascii_es();

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

但程序总是跳转到ascii_eselse条件关键字中的方法.我究竟做错了什么?

Bil*_*nch 5

问题:

  1. 你不是在比较字符串,而是在比较指针.您可以通过更改其中一个参数std::string或使用来解决此问题strcmp(...) == 0.
  2. argv[0]是你的程序的名称.使用argv[1]的第一个参数.
  3. 您没有检查该程序是否存在参数.如果没有,那么访问argv[1]将导致未定义的行为.

一些工作代码:

#include <string>

int main(int argc, char** argv) {
    if (argc < 2)
        abc::ascii_es();
    else if (argv[1] == std::string("es"))
        abc::ascii_es();        
    else if (argv[1] == std::string("all"))
        abc::ascii_all();
    else
        abc::ascii_es();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)