Я знаю, что это нубский вопрос. Я использовал этот пример кода из Вот. Как это должно работать? Я думал, что вы можете ввести что-то для кого, но это просто закрывается сразу.
#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";
Несколько других вещей для передачи:
Во-первых, вам может понадобиться getchar()
(или же cin >> who
) перед return
если вы работаете в IDE, которая закрывает окно выполнения вместо ожидания. В противном случае выходные данные перейдут в окно и сразу исчезнут.
Во-вторых, хотя это, вероятно, хорошо для небольших программ, using namespace std
может вызвать проблемы с более существенными проектами (с точки зрения загрязнения стандартного пространства имен, см. Вот для хорошего объяснения). Я предпочитаю полностью квалифицировать мои звонки, такие как:
std::cout << "blah, blah, blah\n";
В третьих, endl
используется далеко слишком часто большинством разработчиков. В большинстве случаев вы должны просто использовать '\n'
вместо этого, или просто придерживаться \n
до конца строки, как "Hello, world!\n"
, Это потому что \n
путь не приводит к возможной неэффективной промывке потока, как endl
делает. Это покрыто Вот.
Других решений пока нет …