![]() |
#2
玩出来的代码2011-05-01 11:39
|

#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的文件,并把输入的信息存入文件。 以后每次运行的时候,先读取给文本的文件并显示给用户,然后输入新信息,退出时蒋新信息存入这个文档。
#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的文件,并把输入的信息存入文件。 以后每次运行的时候,先读取给文本的文件并显示给用户,然后输入新信息,退出时蒋新信息存入这个文档。