C++ 程序不会打印命令行参数

标签 c++ command-line-arguments

我决定重新开始编程(特别是 C++),为此我开始研究命令行解析器。最终的目标是将它变成一个简单的类,我可以在未来的一些项目中导入它。

这个测试程序应该简单地列出它收到的参数数量,然后打印出来,每行一个,然后退出。

这是我的代码:

#include <iostream>
#include <cstdlib>

using namespace std;

int main(int argc, char* argv[]){
    cout << "Es gibt " << argc << " Argumente." << endl;
    for(int i=0; i << argc; i++){
        cout << "Argument " << i << ": " << argv[i] << endl;
    }
    return 0;
}

这是终端中发生的事情:

[user@dx4320 cmdline-parser]$ g++ cmdline-parser-test.cpp -o parsetest
[user@dx4320 cmdline-parser]$ ./parsetest eins zwei
Es gibt 3 Argumente.
[user@dx4320 cmdline-parser]$ 

为什么它没有按预期打印参数?它清楚地识别了参数,那么问题是什么?我确定我在这里遗漏了一些明显的东西。

最佳答案

你选错了运算符,你需要:

for(int i=0; i < argc; i++){
   // only one ^ is correct here

否则你会得到运算符 << (又名“左移”),结果是表达式 i << argc (其中 i 最初是 0 )总是评估为 false并且循环体永远不会执行。

关于C++ 程序不会打印命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19034948/

相关文章:

Bash 无意中分割命令

c++ - 了解 C++ 编译器

c++ - 如何遍历字符串数组并为不同的字符串应用函数?

c++ - 如何使用(Google Mock)模拟类作为模板参数

c++ - windows下MSGPACK-RPC(C++)

命令行参数

c++ - C++17 中不可复制变量的成员初始化

c - 执行C程序时如何传递文件名

windows - 用于在 Linux 和 Windows 中工作的命令行参数

include - 在 cmake 命令行上指定包含目录