пропуская cin.get () и cin.ignore ()

По какой-то причине моя программа пропускает фрагменты кода cin.get(); а также cin.ignore();, Я не знаю, почему это происходит, потому что два фрагмента прекрасно работают, когда они находятся внутри области видимости main (), а не в операторе if.

Вот соответствующий фрагмент кода:

input.open(inputFileName);
if (input.fail())
{
cout << "Error: failed to open '" << inputFileName << "'.\n\n";
cout << "Press '' to end the program...";
cin.get(); //cin.ignore() also does nothing.
input.close();
exit(1);
}

Остальную часть исходного кода можно найти здесь: http://pastebin.com/xy0qMvBq

3

Решение

cin >> inputFileName;

С помощью этой команды пользователь собирается набрать «вещи», а затем нажать Enter. Это добавит «материал» плюс символ новой строки во входной буфер. Затем «вещи» будут сохранены в inputFileName, и символ новой строки будет оставлен там. Это то, что читают cin.get () и cin.ignore (), они не пропускаются.

3

Другие решения

Размещенная вами часть кода работает нормально, и в этом случае cin.get () не игнорируется.

0

пытаться:

std::string dummy;
getline(std::cin,dummy);

или (если вы еще не сделали):

cin.ignore(1000,'\n');

cin.ignore (1000, ‘\ п’); игнорирует 1000 «входит» в Cin Puffer (ИЗМЕНЕНО, извините).

0