| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 654 人关注过本帖
标题:C++对 对象的文件读写
只看楼主 加入收藏
w123401185
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2013-4-7
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
C++对 对象的文件读写
一段代码:
#include <iostream>
#include <cstdio>
#include <fstream>
using namespace std;

class lei{
    string name;
    int id;
public:
    lei(){}
    lei(string name, int id): name(name), id(id){}
    void show(){
        cout << id << ',' << name << endl;
    }
    lei& operator=(const lei& e){
        if(this==&e)
            return *this;
        id = e.id;
        name = e.name;
        return *this;
    }

    friend
    ostream& operator <<(ostream& o, const lei& e) {
        o << e.id << ',' << e.name << endl;
    }
};

int main()
{
    lei l("haha", 1);
    lei a;   
    FILE* fp = fopen("infor.txt", "a");
    fwrite(&l, sizeof(lei), 1, fp);
    fclose(fp);
    fp = fopen("infor.txt", "r");
    fread(&a, sizeof(lei), 1, fp);  // 可能这个地方有问题,内存访问的错误吧! 请大神们详细的讲解一下,能否这样操作
    fclose(fp);
    cout << a;
}
搜索更多相关主题的帖子: public include namespace friend 
2013-04-07 12:11
锋了
Rank: 7Rank: 7Rank: 7
来 自:向日葵幼儿园
等 级:黑侠
威 望:2
帖 子:306
专家分:586
注 册:2012-10-27
收藏
得分:4 
回复 楼主 w123401185
程序代码:
#include <iostream>
#include <cstdio>
#include <fstream>
using namespace std;

class lei{
    string name;
    int id;            //你这里想做什么呢,C++的类默认是public的,而你后面又是public
public:
    lei(){}
    lei(string name, int id): name(name), id(id){}
    void show(){
        cout << id << ',' << name << endl;
    }
    lei& operator=(const lei& e){
        if(this==&e)
            return *this;
        id = e.id;
        name = e.name;
        return *this;
    }

    friend
    ostream& operator <<(ostream& o, const lei& e) {
        o << e.id << ',' << e.name << endl;
    }
}; 

int main()
{
    lei l("haha", 1);
    lei a;    
    FILE* fp = fopen("infor.txt", "a");
    fwrite(&l, sizeof(lei), 1, fp);  //你这里用的是C语言的读写方法,为什么不用C++自己的呢。如果是用C的话用                               
    fclose(fp);                      //fprintf()和fscanf()比较好,初略的看了下,其他的就没有看到                     
    fp = fopen("infor.txt", "r");
    fread(&a, sizeof(lei), 1, fp);  // 可能这个地方有问题,内存访问的错误吧! 请大神们详细的讲解一下,能否这样操作
    fclose(fp);
    cout << a;
}
2013-04-07 13:35
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:4 
fwrite(&l, sizeof(lei), 1, fp); 就已经不对了

以 char* p = "abc" 举例
你要存的是p指向的"abc",而不是p本身
2013-04-07 13:41
w123401185
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2013-4-7
收藏
得分:0 
回复 2楼 锋了
C++的类默认是private的吧! 我记得。
如果我想读写一个数据块,该怎么操作。 C++中是否提供函数?
2013-04-07 17:41
w123401185
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2013-4-7
收藏
得分:0 
回复 3楼 rjsp
我只是模仿着C中对结构体的读写操作。 请问C++中能否对一个数据块进行读写。 比如要对一个类的实例进行读写操作。  C++可否提供这样的函数
2013-04-07 17:43
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:4 
文件的打开与关闭首先你要为文件流和指定的文件建立关联,然后制定打开方式

Maybe
2013-04-07 22:26
w123401185
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2013-4-7
收藏
得分:0 
回复 6楼 邓士林
恩。 我貌似找到方法了,正在调试。
2013-04-08 10:02
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
以下是引用w123401185在2013-4-7 17:43:31的发言:

我只是模仿着C中对结构体的读写操作。 请问C++中能否对一个数据块进行读写。 比如要对一个类的实例进行读写操作。  C++可否提供这样的函数

这个和C++无关,即使在C中,也不是所有结构体都可以这么操作的。
2013-04-08 12:06
w123401185
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2013-4-7
收藏
得分:0 
回复 8楼 rjsp
我大概是明白了,最近有些忙。 过些时间我调试好了再来发布跟大家分享。
2013-04-09 13:06
明天更好山鹰
Rank: 2
等 级:论坛游民
威 望:1
帖 子:23
专家分:30
注 册:2013-3-11
收藏
得分:4 
围观
2013-04-09 17:45
快速回复:C++对 对象的文件读写
数据加载中...
 
   



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

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