如何在c++中使用getopt_pp

How to use getopt_pp in c++?

本文关键字:getopt pp c++      更新时间:2023-10-16

我知道这是个小问题。我在这里使用了这个示例代码。它应该如何工作?我以为你可以为谁输入一些内容,但它会立即关闭。

#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;
}

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对小程序来说可能还可以,但它可能会在更实质性的项目中引发问题(就污染标准名称空间而言,请参阅此处以获得良好的解释(。我更喜欢完全限定我的电话,例如:

std::cout << "blah, blah, blahn";

第三,endl被大多数开发人员使用得太频繁了。大多数时候,您应该使用'n',或者将n添加到像"Hello, world!n"这样的字符串的末尾。这是因为n方式不会像endl那样强制可能低效的流冲洗。这里已经涵盖了。