如何在c ++中使用getopt_pp?

时间:2013-02-25 08:51:13

标签: c++ getopt

我知道这是一个菜鸟问题。我使用了来自here的示例代码。它应该如何工作?我以为你可以为谁输入一些东西,但它会立即关闭。

#include <iostream>
#include "getopt_pp_standalone.h"

using namespace GetOpt;
using namespace std;

 int main(int argc, char* argv[])
 {
    string who;

    GetOpt_pp ops(argc, argv);

    ops >> Option('n', "name", who, "world" );              /* the default name is 'world' */

    cout << "Hello " << who << "!" << endl;

    return 0;
}

1 个答案:

答案 0 :(得分:0)

getopt的变体从命令行获取选项,而不是由用户输入。

您需要使用以下内容运行程序:

myprog -n Pax

如果您想要用户输入交互式,请完全删除getopt内容并使用这些内容,例如:

std::cout << "Identify yourself, interloper!\n";
std::cin >> who;
std::cout << "Hello, " << who << ", my name is Pax.\n";

要传授的其他一些事项:

首先,如果您在关闭执行窗口而不是等待的IDE中运行,则可能需要在getchar()之前放置cin >> who(或return)。否则,输出将转到窗口并立即消失。

其次,尽管小型程序可能没问题,但using namespace std可能会导致更多实质性项目出现问题(在污染标准名称空间方面,请参阅here以获得详细说明)。我更喜欢完全符合我的要求,例如:

std::cout << "blah, blah, blah\n";

第三,大多数开发人员经常使用 endl。大多数情况下,您应该只使用'\n',或者只需将\n添加到"Hello, world!\n"之类的字符串末尾。那是因为\n方式不会像endl那样强制流可能无效的刷新流。这包括here