2013-08-19 2 views
0

Например, если написать эти заявления в коде:Почему cin не распознает ключ ввода, как cin.get делает?

char a[10]; 
char b[10]; 
cin>>a; 
cin>>b; 

cin>>b; не видит Введите нажатую клавишу после ввода, например, Hello

но когда вместо cin>>b; записи cin.get(b, 10); затем cin.get(b, 10); читает Введите ключ из предыдущего отчета.

+0

Что вы подразумеваете под «не видите клавишу ввода, которая была нажата после ввода?» Вы имеете в виду, что он не переместил курсор в новую строку в консоли? –

+0

Это не должно даже компилироваться. Вы имели в виду, что эти массивы будут 'char'? –

+0

@SebastianRedl Опечатка, извините – Sunrise

ответ

6

Работая в предположении, что a и b являются массивами char здесь, потому что в противном случае ваш вопрос не имеет смысла.

get - это «неформатированная» входная функция, предназначенная для считывания ввода, когда он входит в поток. Вот почему он читает новую строку.

>> - это «форматированная» входная функция, предназначенная для чтения определенного типа данных естественным образом. В частности, >> с массивом char считывает одно слово, то есть последовательность символов, не содержащую пробелов. Вот почему он перестает читать, когда встречает новую строку, которая является пробелом.