編寫代碼來寫的對象到一個文件,閱讀它們,並在屏幕怪異ifstream的行爲
#include<iostream>
#include<fstream>
#include<cstring>
using namespace std;
////////////////////////////////////////////////////////////
class employee{
private:
string name;
unsigned long ID;
public:
employee():name(""),ID(0){}
void putdata(){cout<<"Enter employee's name: ";cin>>name;cout<<"Enter employee's ID: ";cin>>ID;}
void getdata(){cout<<"Employee's name is: "<<name<<endl;cout<<"Employee's ID is: "<<ID<<endl;}
friend ostream& operator << (ostream&,employee&);
friend istream& operator >> (istream&,employee&);
};
ostream& operator << (ostream& f,employee& emp){ // запись объекта в файл
f<<emp.ID<<"-"<<emp.name<<"?";
return f;
}
istream& operator >> (istream& f,employee& empl){ // чтение объекта из файла
char dummy;
f>>empl.ID>>dummy;
f>>dummy;
empl.name="";
while(dummy!='?'){
empl.name+=dummy;
f>>dummy;
}
}
////////////////////////////////////////////////////////////
int main(){
char ch='y';
ofstream file1;
ifstream file2;
file1.open("TAB.txt");
employee one;
while(ch=='y'){ // цикл для записи
one.putdata();
file1<<one; // write data into file
cout<<"Go on?(y,n): ";cin>>ch;
}
file1.close();
file2.open("TAB.txt");
while(file2.good()){ // цикл для чтения из файла
file2>>one;
one.getdata();
}
file2.close();
system("pause");
return 0;
}
上打印輸入對象後,個節目打印出來掛。我猜while(file2.good())有問題,但我不確定。任何人都能評論?
這意味着'file2'不'good' - 文件的存在嗎?另外嘗試'cout << strerror(errno)'。 – edmz
'file1.open()'創建一個文件 – Andrew
你可能想要'cout <<「繼續?(y,n):」<< std :: endl;'因爲有些實現不允許輸入是終端上輸出的不完整行。 – Logicrat