C++ 检查C++;

C++ 检查C++;,c++,command-line-arguments,C++,Command Line Arguments,我正在构建一个CLI应用程序,该应用程序应执行以下类似操作: /app 欢迎使用该应用程序,键入-h或--help以了解更多信息。 /附录-h 命令列表:。。。 以下是我试图构建的代码: #包括 使用名称空间std; int main(int argc,字符**argv){ coutargv是指向char*的指针 您必须首先选择要访问的argc参数 e、 g.argv[2]表示第三个参数 您不能在char*上执行stringcompare with==您必须使用strcmp,或者从char*构

我正在构建一个CLI应用程序,该应用程序应执行以下类似操作:

/app
欢迎使用该应用程序,键入-h或--help以了解更多信息。
/附录-h
命令列表:。。。
以下是我试图构建的代码:

#包括
使用名称空间std;
int main(int argc,字符**argv){

coutargv是指向char*的指针

您必须首先选择要访问的argc参数

e、 g.argv[2]表示第三个参数

您不能在char*上执行stringcompare with==您必须使用strcmp,或者从char*构造字符串对象,如下所示: 字符串arg2=argv[2]


然后,您可以执行arg2==“--help”

如果要使用==运算符,则需要循环遍历参数数组并将字符数组转换为字符串

#include <iostream>
#include <string>

using namespace std;

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

    cout << "Welcome to the app. Type -h or --help to learn more\n";

    for(int i=0;i<argc;i++)
    {
        if(string(argv[i]) == "-h" || string(argv[i]) == "--help")
        {
            cout << "List of commands:...";
        }
    }
    return 0;
}
#包括
#包括
使用名称空间std;
int main(int argc,字符**argv){

不能像比较整数那样比较字符串!!!
使用/stricmp

从C++17开始,编写此代码的最佳方法如下:

#include <iostream>
#include <string_view>

int main(int argc, char** argv) {
    using namespace std::literals;

    std::cout << "Welcome to the app. Type -h or --help to learn more\n";

    if (argv[0] == "-h"sv || argv[0] == "--help"sv) {
       std::cout << "List of commands:...";
    }
}
#包括
#包括
int main(int argc,字符**argv){
使用名称空间std::literals;

std::cout,例如
argv==“-h”
您可以比较两个永远不相等的指针。正如错误消息中所述,指针的类型也不同。我建议您阅读,因为它们应该包含有关您所需内容的信息。如果您只需搜索一点,也有大量教程和示例说明如何执行此操作。请查看。假设
-h是第一个命令行参数-并且您已经检查了<代码> ARC> <代码>,以确保提供这样的参数。您需要做代码> STRCMP(ARGV(1),-H))/代码>。更好的是,使用C +代码比较函数,解决如何使用C++ <代码> STD::String < /C> >代码> ARVV〔2〕。
是第二个参数,考虑到
argv[0]
是命令的名称。在索引
argv
@a.Franzen argv[0]始终是程序/命令的名称,这取决于argc(其中包含传递的参数数量),您可能应该添加一个注释以始终检查
argc
你可以访问相应的参数。C++有很多可读的方法来编写这个代码。你的断言“你不能比较字符串的方式比较整数”在C++中是错误的,如果你添加更多的感叹号,它不会变得更真实。
#include <iostream>
#include <string_view>

int main(int argc, char** argv) {
    using namespace std::literals;

    std::cout << "Welcome to the app. Type -h or --help to learn more\n";

    if (argv[0] == "-h"sv || argv[0] == "--help"sv) {
       std::cout << "List of commands:...";
    }
}