| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 852 人关注过本帖
标题:[讨论]文件读取
只看楼主 加入收藏
天使坠落的眼泪
Rank: 2
等 级:新手上路
威 望:5
帖 子:204
专家分:0
注 册:2006-5-16
收藏
 问题点数:0 回复次数:16 
[讨论]文件读取

#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
class student {
private:
char* a;
char* b;
char* c;
public:
student();
~student();
void display()const;
void set() const;
};

student::student()
{
a=new char[10];
b=new char[10];
c=new char[10];
cout<<"construct"<<endl;
}

student::~student()
{

delete a;
delete b;
delete c;
cout<<"destroyed"<<endl;
}

void student::display() const{
cout<<setw(10)<<a<<setw(10)<<b<<setw(10)<<c<<endl;

}
void student::set() const
{
cout<<"cin a"<<endl;
cin>>a;
cout<<"cin b"<<endl;
cin>>b;
cout<<"cin c"<<endl;
cin>>c;
}


void main (){
student a[3];
ofstream abc("a.txt",ios::out|ios::ate);
for (int i=0;i<3;i++)
{
abc.write(reinterpret_cast<char*>(&a[i]),sizeof(student));
a[i].set();
}

abc.close();
}

#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
class student {
private:
char* a;
char* b;
char* c;
public:
student();
~student();
void display()const;
void set() const;
};

student::student()
{
a=new char[10];
b=new char[10];
c=new char[10];
cout<<"construct"<<endl;
}

student::~student()
{

delete a;
delete b;
delete c;
cout<<"destroyed"<<endl;
}

void student::display() const{
cout<<setw(10)<<a<<setw(10)<<b<<setw(10)<<c<<endl;

}
void student::set() const
{
cout<<"cin a"<<endl;
cin>>a;
cout<<"cin b"<<endl;
cin>>b;
cout<<"cin c"<<endl;
cin>>c;
}


void main (){
student a[3];

ifstream bcd("d:\\a.doc",ios::in);
bcd.seekg(ios::beg);
for(int j=0;j<3;j++)
{
bcd.read(reinterpret_cast<char*>(&a[j]),sizeof(student));
a[j].display();
}

bcd.close();
}


当第一个程序建立文件之后,用第二个程序读出文件后都是乱码,是我VC什么东西没有调还是程序又问题?

搜索更多相关主题的帖子: 文件 
2006-11-18 08:59
天使坠落的眼泪
Rank: 2
等 级:新手上路
威 望:5
帖 子:204
专家分:0
注 册:2006-5-16
收藏
得分:0 


樹欲靜而風不止... http://blog./seablue_xj
2006-11-19 13:13
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
ofstream abc("a.txt",ios::out|ios::ate);
for (int i=0;i<3;i++)
{
abc.write(reinterpret_cast<char*>(&a[i]),sizeof(student));
a[i].set();
}
你还没写呢吧

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-11-19 13:36
狐狸尾巴
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-9-4
收藏
得分:0 
abc.write(reinterpret_cast<char*>(&a[i]),sizeof(student));

这里的&a[i]是不是有问题啊 ? a[i]对象包括的内容是char*a,b,c还有两个函数
2006-11-19 21:02
天使坠落的眼泪
Rank: 2
等 级:新手上路
威 望:5
帖 子:204
专家分:0
注 册:2006-5-16
收藏
得分:0 
那没有问题的,
我也是帮别人去改,而且之前也发现过这种问题的

樹欲靜而風不止... http://blog./seablue_xj
2006-11-19 22:19
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
ofstream abc("a.txt",ios::out|ios::ate);
for (int i=0;i<3;i++)
{
abc.write(reinterpret_cast<char*>(&a[i]),sizeof(student));
a[i].set();
}
&a[i]被写进去,&a[i]里面的char*都是乱码啊!你初始化下吧

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-11-20 11:40
天使坠落的眼泪
Rank: 2
等 级:新手上路
威 望:5
帖 子:204
专家分:0
注 册:2006-5-16
收藏
得分:0 
是啊,我初始化也不对啊,
而且用兵 fstream创建出来的也不对
,ofstream ifstream在一个.cpp文件里也不对,我实在是没有办法了

樹欲靜而風不止... http://blog./seablue_xj
2006-11-20 12:10
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

问题可能是这里:
for (int i=0;i<3;i++)
{
abc.write(reinterpret_cast<char*>(&a[i]),sizeof(student));
a[i].set();
}
这里把字符读进文件里,但是读出的时候,却是把它当作地址读进a[i]的几个变量里去了。
你试试看把成员变量都换成非指针类型试试。


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-11-20 17:16
天使坠落的眼泪
Rank: 2
等 级:新手上路
威 望:5
帖 子:204
专家分:0
注 册:2006-5-16
收藏
得分:0 

啊?
我不是以二进制的方式输出的,那么建立的a.txt文件打开后,就可以看到输出的问题,这样就和文件的读取没有任何的关系,
但是现在如果直接打开a.txt文件,其中显示的仍然是乱码,所以出错的地方应该是在这里,
不是指针的情况我也实验过,只用一个student a;
然后输入,结果还是乱码.
现在能确定的不是从文件中读取时的问题,而是在向文件中写入是出现的问题.


樹欲靜而風不止... http://blog./seablue_xj
2006-11-20 22:21
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

不会啊,我试过了的啊,把char*a,b,c;换成int a,b,c;就正常了。

我记得好象只要是read和write就是2进制读写吧?


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-11-21 18:43
快速回复:[讨论]文件读取
数据加载中...
 
   



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

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