【问题标题】:C++ program won't print command-line argumentsC++ 程序不会打印命令行参数
【发布时间】:2013-09-27 01:39:56
【问题描述】:

我决定重新开始编程(特别是 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]$ 

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

【问题讨论】:

  • i &lt;&lt; argc改成i &lt; argc看看是不是效果更好。

标签: c++ command-line-arguments


【解决方案1】:

你有错误的运算符,你需要:

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

否则,您将拥有运算符 &lt;&lt;(又名“左移”),因此,表达式 i &lt;&lt; argc(其中 i 最初为 0)总是计算为 false 并且循环的body 永远不会被执行。

【讨论】:

  • 谢谢。您的解决方案完美运行。自从我使用 C++ 以来已经有一段时间了。我最近在 java 中完成了编程。
  • 呃,这个bug在Java中不是基本一样吗?
  • @KG6ZVP 如果他的解决方案完美运行,为什么不将其指定为“解决方案”?这样我们都知道它已经解决了:)
  • @KG6ZVP 这当然是我的目标,但我不知道 cluracan。
猜你喜欢
  • 1970-01-01
  • 2017-03-24
  • 2013-10-10
  • 2021-03-12
  • 2020-05-05
  • 2016-05-01
  • 2011-12-05
  • 1970-01-01
  • 2020-08-09
相关资源
最近更新 更多