Я просмотрел определение функции flush в C++, и у меня есть некоторые действительно удовлетворительные ответы, но я недавно натолкнулся на следующий код, и я не могу понять, что использование флеша здесь имеет большое значение, кажется, что код дает допустимый результат даже без использования флеша. Пожалуйста, помогите!Функция флеша в cpp
#include <iostream>
using namespace std;
class person {
public:
int ph_no;
char name[50];
void accept() {
cout<<"\nEnter name";
cin>>name;
cout<<"\nenter ph_no";
cin>>ph_no;
}
void display() {
cout<<"name:"<<name<<"\n";
cout<<"phone_no:"<<ph_no<<"\n" ;
}
};
int main() {
// a few other functions to create file and read file &c &c.
person p;
int pno,pos,choice,offset,i;
fstream fp;
char name[20];
cout<<"\n enter name";
cin>>name;
fp.open("d:\\test.dat",ios::out|ios::in|ios::ate|ios::binary);
fp.seekg(0,ios::beg);
pos=-1;
i=0;
while(fp.read((char *)&p,sizeof(p))) {
if((strcmp(name,p.name))==0) {
pos=i;
break;
}
i++;
}
offset=pos*sizeof(p);
fp.seekp(offset);
cout<<"\ncurrent phno:"<<p.ph_no;
cout<<"\nenter new phone no";
cin>>pno;
p.ph_no=pno;
fp.write((char *)&p,sizeof(p))<<flush;
cout<<"\nrecord updated\n";
fp.seekg(0);
while(fp.read((char *)&p,sizeof(p))) {
p.display();
}
fp.close();
return 0;
}
Где вы ожидали, что «флеш» будет иметь значение? –
'fstream :: write' возвращает' basic_ostream & ', поэтому все должно быть хорошо, хотя я бы назвал его в следующей строке для ясности. – krzaq