C++ 中,int argc, char *argv[] 是 main 函数的参数形式之一,用于接收命令行参数。这是一个标准方式,使程序能够从命令行接受输入。char **argv 与 char *argv[] 等价,都是指向字符指针的指针。int main(int argc, char **argv):更常见于一些平台,但功能相同。

1、基本用法

argc(argument count)表示命令行参数的个数(包括程序名本身)。argv(argument vector) 是一个字符指针数组,保存所有参数的字符串(C风格字符串)。

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

int main(int argc, char **argv)

#include<iostream>
using namespace std;


int main(int argc, char *argv[]) {
    std::cout << "参数个数: " << argc << std::endl;

    for (int i = 0; i < argc; ++i) {
        std::cout << "参数 " << i << ": " << argv[i] << std::endl;
    }

    return 0;
}

注意:argv[0] 通常是程序本身的名字。所有参数都是字符串类型,需要用 std::stoi, std::stod 等函数进行转换。argv[argc] 是一个空指针 nullptr(但不建议访问它)。

2、读取命令行输入文件或输出路径

用户运行程序时传入文件路径或名称作为参数。

#include<iostream>
using namespace std;


int main(int argc, char *argv[]) {
    if (argc != 3) {
        std::cerr << "用法: " << argv[0] << " <输入文件> <输出文件>\n";
        return 1;
    }
    std::string inputFile = argv[1];
    std::string outputFile = argv[2];
    // 处理文件...
}

3、设置程序参数(如模式、选项、开关)

用户通过命令行传递不同选项影响程序行为,比如 --verbose--help

#include<iostream>
using namespace std;

int main(int argc, char *argv[]) {
    std::cout << "argc = " << argc 
              << "\nargv[0] = " << argv[0];
    for (int i = 1; i < argc; ++i) {
        std::string arg = argv[i];
        std::cout << arg;
        if (arg == "--help") {
            std::cout << "帮助信息:用法...\n";
        } else if (arg == "--mode" && i + 1 < argc) {
            std::string mode = argv[++i];
            std::cout << "压缩模式:" << mode << std::endl;
        }
    }
}