Несколько входов на одной линии
Я смотрел безрезультатно, и я боюсь, что это может быть такой простой вопрос, который никто не осмеливается спросить.
Можно ли вводить несколько элементов из стандартного ввода в одну строку? Я имею в виду это:
float a, b;
char c;
// It is safe to assume a, b, c will be in float, float, char form?
cin >> a >> b >> c;
Ответы
Ответ 1
Да, вы можете вводить несколько элементов из cin
, используя именно тот синтаксис, который вы описываете. Результат по существу идентичен:
cin >> a;
cin >> b;
cin >> c;
Это связано с техникой, называемой "цепочкой операторов".
Каждый вызов operator>>(istream&, T)
(где T
- произвольный тип) возвращает ссылку на свой первый аргумент. Поэтому cin >> a
возвращает cin
, который может использоваться как (cin>>a)>>b
и т.д.
Обратите внимание, что каждый вызов operator>>(istream&, T)
сначала потребляет все пробельные символы, а затем столько символов, сколько требуется для выполнения операции ввода, вплоть до (но не включая) первого следующего символа пробела, недопустимого символа или EOF.
Ответ 2
Да, вы можете.
Из cplusplus.com:
Поскольку эти функции являются функциями перегрузки операторов, обычным способом их вызова является:
strm >> variable;
Где strm
- это идентификатор объекта istream, а variable
- объект любого типа, поддерживаемый как правильный параметр. Также можно вызвать последовательность операций извлечения как:
strm >> variable1 >> variable2 >> variable3; //...
который является таким же, как выполнение последовательных выделений из одного и того же объекта strm
.
Просто замените strm
на cin
.