关于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文件里的东西就不行了(乱码),是什么原因啊 啊!! 展开
#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文件里的东西就不行了(乱码),是什么原因啊 啊!! 展开
展开全部
将
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类的实现
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类的实现
展开全部
string等类都不是文本,你不可以进行直接的文件读写,你必须进行“串行化”
http://wenku.baidu.com/view/9c117bcdda38376baf1fae76.html
http://wenku.baidu.com/view/9c117bcdda38376baf1fae76.html
追问
这个...看不懂,我只是个菜菜,只懂得C++的皮毛,是这样的,老师要我们写图书管理系统,然后我现在用的是对象数组来作为”书“,还有其他把这些书保存文件中然后下次运行程序又能读出来并对其操作的办法吗?快到上交期限了,跪求大大指点指点T^T
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询