打印

文件读取问题

[复制链接]
1167|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
baidudz|  楼主 | 2013-12-29 16:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

class A
{
private:
    int i;
public:
    A()
    {
        i = 10;
    }
    virtual void show()
    {
        cout << i << endl;
    }
    virtual void file(ofstream &of)
    {
        of << i << endl;
    }
};

class B:public A
{
private:
    string str;
public:
    B()
    {
        str = "yuzengyuan";
    }
    void show()
    {
        A::show();
        cout << str << endl;
    }
    void file(ofstream &of)
    {
        A::file(of);
        of << str << endl;
    }
};

class ABFamily
{
public:
    static A* FamilyAB(int i)
    {
        A* q;
        if (i == 1)
        {
           q = new A();
        }
        else
        {
            q = new B();
        }
        return q;
    }
};

int main()
{
    A* p[10];  
    int temp;

    for (int i = 0; i < 10; i++)  
    {
        cout << "请输入1-2数字: ";
        cin >> temp;
        p[i] = ABFamily::FamilyAB(temp);
    }
     
    for (i = 0; i < 10; i++)  //把数据向文件里输出
    {
        ofstream file("1.txt", ios::app);
        p[i]->file(file);
        file.close();
    }

    for (i = 0; i < 10; i++)  //释放内存
    {
        delete p[i];
    }
    cout << "程序完成!\n";
    return 0;
}
上面是的程序把数据写入到文件里,但我想重新读取出来,可是这里有个问题,因为是用了多态,所以写入到文件里的数据有 A对象也有B对象的,但在读取,我不知道应该定义个什么类型来接收这些数据。

相关帖子

沙发
秋天落叶| | 2013-12-29 16:53 | 只看该作者
这是你文件内容定义的问题.
你应该先写入一个对象类型, 再写入对象内容. 这样读的时候就可以先读出类型, 再判断如何读.
如果文件中一定不能加对象类型, 那就不能整体读出对象, 只能一个个字符读出来, 然后再判断是什么对象类型.

使用特权

评论回复
板凳
pkat| | 2013-12-29 17:05 | 只看该作者
你需要在文件里标明对象的类型,比如用一个字节,如果是0就是类型A,1就是类型B,2就是类型C。

使用特权

评论回复
地板
火箭球迷| | 2013-12-29 17:14 | 只看该作者
读的时候根据前面的标志 不就可以判断数据类型了!?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

239

主题

2284

帖子

0

粉丝