#c
Вопрос:
Программа , над которой я работаю, требует, чтобы пользователь ввел что-то вроде i v
или r v
, где i
означает «вставить», r
означает «удалить» и v
будет целым числом, которое нужно вставить или удалить.
Как я могу прочитать входные данные и разделить их на две переменные, одну для оператора (как в i
или d
), а другую для значения?
Пример:
cout lt;lt; "Enter decision"; cin gt;gt; decision; // somehow split the decision into the two variables below. int value; char operation;
Комментарии:
1. Вы пробовали:
char operator; int number; std::cin gt;gt; operation gt;gt; number;
?
Ответ №1:
Если вы хотите что-то прочитать в a std::string
(что, я полагаю, так decision
и есть), вам следует использовать std::getline
. Форматированный ввод, например cin gt;gt; decision;
, по умолчанию будет читать только одно слово. Любой символ пробела заставит его прекратить чтение.
if(std::getline(std::cin, decision)) { // successfully read a line }
Затем вам нужно разделить решение на две переменные. Одним из простых решений является использование a std::istringstream
. Вы копируете файл std::string
в a std::istringstream
и извлекаете из него значения:
#include lt;sstreamgt; // ... std::istringstream is(decision); if(is gt;gt; operation gt;gt; value) { // success }
В зависимости от остальной части программы, другой вариант-читать непосредственно из std::cin
двух переменных и пропускать чтение в decision
:
if(std::cin gt;gt; operation gt;gt; value) { // success }
Комментарии:
1. Это идеально, спасибо
2. @FayZ Рад это слышать! Не за что!