| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 451 人关注过本帖
标题:一个程序的 文件输入输出问题
只看楼主 加入收藏
niu91
Rank: 2
等 级:论坛游民
帖 子:64
专家分:44
注 册:2009-7-25
结帖率:83.33%
收藏
 问题点数:0 回复次数:2 
一个程序的 文件输入输出问题
程序代码:
#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的文件,并把输入的信息存入文件。 以后每次运行的时候,先读取给文本的文件并显示给用户,然后输入新信息,退出时蒋新信息存入这个文档。

搜索更多相关主题的帖子: false 
2011-04-30 09:07
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:0 
no problem、、

离恨恰如春草,更行更远还生。
2011-05-01 11:39
niu91
Rank: 2
等 级:论坛游民
帖 子:64
专家分:44
注 册:2009-7-25
收藏
得分:0 
回复 2楼 玩出来的代码
在VS2010中能够正常运行出结果
但是在VC6.0和VS2005中,需要在fs.close();前加上fs.clear();才能保障结果运行正确
2011-05-03 08:16
快速回复:一个程序的 文件输入输出问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020486 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved