Как использовать getopt_pp в C ++?

Я знаю, что это нубский вопрос. Я использовал этот пример кода из Вот. Как это должно работать? Я думал, что вы можете ввести что-то для кого, но это просто закрывается сразу.

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

0

Решение

Варианты getopt получить варианты от командная строка вместо ввода пользователем.

Вам нужно будет запустить вашу программу с чем-то вроде:

myprog -n Pax

Если ты хочешь интерактивный вход от пользователя, избавиться от getopt вещи в целом и просто используйте потоки, такие как:

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

Несколько других вещей для передачи:

Во-первых, вам может понадобиться getchar() (или же cin >> who) перед return если вы работаете в IDE, которая закрывает окно выполнения вместо ожидания. В противном случае выходные данные перейдут в окно и сразу исчезнут.

Во-вторых, хотя это, вероятно, хорошо для небольших программ, using namespace std может вызвать проблемы с более существенными проектами (с точки зрения загрязнения стандартного пространства имен, см. Вот для хорошего объяснения). Я предпочитаю полностью квалифицировать мои звонки, такие как:

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

В третьих, endl используется далеко слишком часто большинством разработчиков. В большинстве случаев вы должны просто использовать '\n' вместо этого, или просто придерживаться \n до конца строки, как "Hello, world!\n", Это потому что \n путь не приводит к возможной неэффективной промывке потока, как endl делает. Это покрыто Вот.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]