проверить, прочитал ли оператор std :: cin >> всю строку - PullRequest
1 голос
/ 18 августа 2010

Я реализую небольшой анализатор командной строки. Допустим, у меня есть команда, которая требует 2 параметра. Я хочу позволить пользователю вводить все 3 строки (команду и 2 параметра) в одну строку, а также в несколько строк. В настоящее время у меня что-то вроде этого:

std::string command;
std::cin >> command;
std::cout << command << " entered\n";
std::string param1;
std::cin >> param1;
std::cout << param1 << " entered\n";
std::string param2;
std::cin >> param2;
std::cout << param2 << " entered\n";

Теперь я хочу быть в состоянии обнаружить, что пользователь только что ввел команду без какого-либо параметра, и вывести направления для этого. Я думаю, что после получения команды я должен проверить, содержит ли строка что-нибудь еще, и если нет, попросить пользователя ввести больше. Я пробовал с eof() и fail(), но они не работают. Как я могу проверить это тогда?

Спасибо.

1 Ответ

6 голосов
/ 18 августа 2010

Если вы хотите прочитать строку, тогда вы должны использовать std::getline.Получив целую строку, вы можете разбить ее на слова, сколько бы их ни было.

...