Я проходил код в своем учебнике по школе, в котором есть строка, которая выполняет функцию очистки входного буфера (упоминается как комментарий в коде).Что означает очистка входного буфера?
Я не мог полностью понять его цель. Это определенно требуется, поскольку его удаление приводит к запуску процесса ввода в консоль.
Пожалуйста, объясните, что это за функция, и что происходит, когда я удаляю ее.
Я также пробовал использовать cin.ignore(); и он отлично работает. Какая функция используется здесь, является ли она точной заменой cin.ignore()?
P.S. В школе мы используем более старую версию C++. Таким образом, расширение «.h», clrscr() ;, и т.д.
#include <iostream.h>
#include <fstream.h>
#include <conio.h>
void main(){
clrscr();
ofstream fout("student.txt", ios::out);
char name[30], ch;
float marks = 0.0;
for(int i = 0; i < 5; i++){
cout << "Student " << (i+1) << ":\tName: ";
cin.get(name,30);
cout << "\t\tMarks: ";
cin >> marks;
cin.get(ch); //for clearing input buffer (This thing!)
fout << name << '\n' << marks << '\n';
}
fout.close();
ifstream fin("student.txt", ios::in);
fin.seekg(0);
cout << "\n";
for(int i = 0; i < 5; i++){
fin.get(name,30);
fin.get(ch); //Again
fin >> marks;
fin.get(ch); //Same
cout << "Student Name: " << name;
cout << "\tMarks: " << marks << "\n";
}
fin.close();
getch();
}
Нет, он использует «более старую» версию C++. Скорее всего, он использует turbo C++, который запускает стандартную/нестандартную версию C++. – NathanOliver
@NathanOliver Мой плохой, извините. Спасибо что подметил это. Вы должны признать, что «более старая версия C++» звучит довольно странно. Я думал, что он имел в виду «не cpp11 или cpp14». –
Я начинаю заниматься программированием. Да, я использую Turbo C++, я думал, что это была более старая версия, мне плохо. В любом случае, cin.get (ch) не должен брать пользовательский ввод от пользователя и передавать его в «ch»? –