关于C++二进制文件的读写乱码问题!!

#include<fstream>#include<iostream>#include<string>#include<iomanip>usingnamespacestd... #include <fstream>
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
class Student
{
public:
Student()
{
num = "";
name = "";
}
Student(string n,string nam)
{
num = n;
name = nam;
}
void show_basic_information()
{
cout << setw(10) << num << setw(8) << name ;
}
string num; //学号
string name; //姓名
};
void search_num() //按学号查
{
Student stu[2] = {Student("2011011","十一") , Student("2011012","十二")};
//**********************写进文件***************************
fstream iofile("D.txt" , ios::in|ios::out|ios::binary);
if(!iofile)
{
cout << "D.txt error!" << endl;
exit(1);
}
iofile.write( (char*)&stu[0] , sizeof(stu));
//**********************读取文件***************************
iofile.seekg(0,ios::beg);
Student stud[2];
iofile.read( (char*)&stud[0] , sizeof(stud) );
for(int i = 0; i < 2 ; i++)
{
stud[i].show_basic_information();
}
iofile.close();
}

int main()
{
search_num();
return 0;
}
程序运行时没问题,但我想的是当我输入的数据保存到了TXT中,下次直接读入TXT文件里的东西就不行了(乱码),是什么原因啊 啊!!
展开
 我来答
shuhenshuhen
2012-10-31 · 超过15用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:39.5万
展开全部

string num; //学号
string name;
改为
char num[20]; //学号
char name[20];
另外将
Student()
{
num = "";
name = "";
}
Student(string n,string nam)
{
num = n;
name = nam;
}

改为
Student()
{
strcpy(num ,"");
strcpy(name ,"");
}
Student(const char* n,const char* newName)
{
strcpy(num ,n);
strcpy(name ,newName);
}

这样虽然扩张性不好 但也可以运行。
想知道为什么,去网上搜搜string类的实现
arongustc
科技发烧友

2012-10-31 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:5940万
展开全部
string等类都不是文本,你不可以进行直接的文件读写,你必须进行“串行化”
http://wenku.baidu.com/view/9c117bcdda38376baf1fae76.html
追问
这个...看不懂,我只是个菜菜,只懂得C++的皮毛,是这样的,老师要我们写图书管理系统,然后我现在用的是对象数组来作为”书“,还有其他把这些书保存文件中然后下次运行程序又能读出来并对其操作的办法吗?快到上交期限了,跪求大大指点指点T^T
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式