c++ main 函数,如果命令行参数包含 *,则 argc 值很奇怪

标签 c++ argc

像这样一段非常简单的 C++ 代码:

int main(int argc, char **argv){
    std::cout << "argc: " << argc << std::endl;
}

g++ -o hello hello.cpp编译

  • 当运行 ./hello u 时,输出为 argc: 2;
  • 当使用./hello u +运行时,输出为argc: 3;
  • 当使用./hello u *运行时,输出是argc: 26,为什么是26

最佳答案

外壳扩展。 * 由 shell 扩展为当前目录中的所有文件,其中似乎有 24 个,并将它们作为单独的参数传递给您的程序。

因为这看起来像是来自 UNIX shell 的调用,所以使用

./hello u \*

./hello u '*'

关于c++ main 函数,如果命令行参数包含 *,则 argc 值很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29389699/

相关文章:

c - 是否有正确定义的方法来分隔 C 中的命令参数?

c++ - 在 Eclipse 中使用 argc 和 argv?

c++ - 如何延迟成员变量的初始化

c++ - Windows API : UpdateLayeredWindow return values

c++遗传算法变异错误

argc/argv 中的命令行解析

c++ - 更改命令行参数 argv

C.pathconf 出错。路径为空

c++ - 从lua脚本调用c++时如何获取多个返回值?

c++ - 重载 operator<< 以作为成员打印