Несколько входов на одной линии - PullRequest
24 голосов
/ 15 сентября 2011

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

Можно ли вводить несколько вещей из стандартного ввода в одну строку? Я имею в виду это:

float a, b;
char c;

// It is safe to assume a, b, c will be in float, float, char form?
cin >> a >> b >> c;

Ответы [ 2 ]

26 голосов
/ 15 сентября 2011

Да, вы можете ввести несколько элементов из cin, используя именно тот синтаксис, который вы описали. Результат по существу идентичен:

cin >> a;
cin >> b;
cin >> c;

Это связано с техникой, называемой операторной цепочкой.

Каждый вызов operator>>(istream&, T) (где T - произвольный тип) возвращает ссылку на свой первый аргумент. Так cin >> a возвращает cin, который может использоваться как (cin>>a)>>b и т. Д.

Обратите внимание, что каждый вызов operator>>(istream&, T) сначала использует все пробельные символы, затем столько символов, сколько требуется для выполнения операции ввода, до (но не включая) первого следующего пробельного символа, недопустимого символа или EOF.

6 голосов
/ 15 сентября 2011

Да, вы можете.

С cplusplus.com :

Поскольку эти функции являются функциями перегрузки операторов, обычным способом их вызова является:

   strm >> variable;

Где strm - это идентификатор объекта istream, а variable - это объект любого типа, поддерживаемый в качестве правильного параметра. Также можно назвать последовательность операций извлечения:

   strm >> variable1 >> variable2 >> variable3; //...

, что аналогично последовательному извлечению из одного и того же объекта strm.

Просто замените strm на cin.

...