一个程序的 文件输入输出问题
程序代码:
#include<fstream> #include<iostream> using namespace std; class abc; ostream& operator<<(ostream& s,abc x); #define bool int #define false 0 class MailMan { public: bool bHaveMsg; void ReadMsgFromFile(); void OutMsg(); void InMsg(); void SaveMsgToFile(); MailMan(); virtual ~MailMan(); private: char Buf[1024]; fstream fs; }; MailMan::MailMan()//构造函数 { cout<<"Mail man working!"<<endl; bHaveMsg=false; } MailMan::~MailMan()//析构函数 { cout<<"Mail man leaving..."<<endl; } void MailMan::OutMsg()//输出文件 { if(Buf[0]!='\0') { cout<<"\n------------Here is your message------------"<<endl; cout<<Buf; cout<<"\n-------------------End----------------------"<<endl; } else { cout<<"\n=================No message=================="<<endl; cout<<Buf; } } void MailMan::InMsg()//写入文件 { char temp; cin.unsetf(ios::skipws); cout<<"\n Please input your message,end with \"~\"(shift+`):"<<endl; for(int i=0;i<1024;i++) { cin>>temp; Buf[i]=temp; if(temp=='~') { Buf[i]='\0'; break; } } } void MailMan::SaveMsgToFile()//保存到文件 { fs.open("d:\\message.dat",ios::out); fs<<Buf; fs.close(); cout<<"\n message saved to file."<<endl; return; } void MailMan::ReadMsgFromFile()//读取文件 { fs.open("d:\\message.dat",ios::in); char temp; fs.unsetf(ios::skipws); for(int i=0;i<1024;i++) { if(fs>>temp) {Buf[i]=temp;} else {Buf[i]='\0';break;} } fs.close(); } int main()//主函数这样写 为什么不能把字符输入进文件当中 而下边的两种主函数就可以 { MailMan *p=new MailMan(); p->ReadMsgFromFile();//把这两行删掉 p->OutMsg();//是可以写进文件的 p->InMsg(); p->SaveMsgToFile(); delete p; return 0; } /*int main() { MailMan *p=new MailMan(); p->ReadMsgFromFile(); p->OutMsg(); MailMan *a=new MailMan(); a->InMsg(); a->SaveMsgToFile(); delete p; return 0; } int main() { MailMan a; a.ReadMsgFromFile(); a.OutMsg(); MailMan *p=new MailMan(); p->InMsg(); p->SaveMsgToFile(); delete p; return 0; }*/ 实现功能:程序第一次运行的时候,建立名为d:\\message.dat的文件,并把输入的信息存入文件。 以后每次运行的时候,先读取给文本的文件并显示给用户,然后输入新信息,退出时蒋新信息存入这个文档。