2013-12-07 2 views
0

Я обнаружил очень своеобразное поведение. Я новичок в C++, поэтому я нашел это странным и не смог объяснить его после прочтения документов на cin.ignore.Зачем нужен запрос cin.ignore()?

#include <iostream> 

using namespace std; 

int main() 
{ 
    cout << "Hello world!" << endl; 
    cin.ignore(10000, '\n'); 
    return 0; 
} 

Приведенный выше код вводит. Если вы добавите int test; CIN >> тест; прямо над cin.ignore, он не будет принимать входные данные.

ответ

2

Когда вы добавляете ввод целого числа, в входном буфере остается строка новой строки (по крайней мере), а затем считывается ignore.

+0

Не слишком уверен, что вы имеете в виду ... вы бы уточнили? – user2316667

+0

Предположим, что пользователь вводит «3.14» (без кавычек) и нажимает на возврат. Затем входной буфер содержит «3.14 \ n» (в нотации C++). Чтение «float» потребляет «3,14» и оставляет «\ n». Затем вызов «игнорировать» потребляет «\ n». –

+0

Это не объясняет, почему приведенный выше код приостанавливает и ждет ввода пользователем ввода ... Я ожидал, что он просто «потребляет» пустой буфер и перейдет. – user2316667