По какой-то причине моя программа пропускает фрагменты кода 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
cin >> inputFileName;
С помощью этой команды пользователь собирается набрать «вещи», а затем нажать Enter. Это добавит «материал» плюс символ новой строки во входной буфер. Затем «вещи» будут сохранены в inputFileName, и символ новой строки будет оставлен там. Это то, что читают cin.get () и cin.ignore (), они не пропускаются.
Размещенная вами часть кода работает нормально, и в этом случае cin.get () не игнорируется.
пытаться:
std::string dummy;
getline(std::cin,dummy);
или (если вы еще не сделали):
cin.ignore(1000,'\n');
cin.ignore (1000, ‘\ п’); игнорирует 1000 «входит» в Cin Puffer (ИЗМЕНЕНО, извините).