【发布时间】:2017-09-16 08:31:01
【问题描述】:
我将数据插入到文本文件text file used in C++ programme
数据是这样的,但是应该是可读的形式。
这是程序
#include<iostream>
#include <fstream>
#include <Windows.h>
#include <string>
using namespace std;
class Record {
private:
int id;
char name[50];
public:
void insert_data();
void show_data();
};
void Record::insert_data() {
cout << "\n\tName: ";
cin.ignore();
cin.getline(name, 50);
cout << "\n\tID: ";
cin >> id;
}
void Record::show_data() {
cout << "\n\tName: ";
cout << name;
cout << "\n\tID: ";
cout << id;
}
void write_info();
void show_info();
int main() {
//write_info();
show_info();
cout << endl;
system("pause");
}
void write_info() {
Record info;
ofstream data("data.txt", ios::app);
info.insert_data();
data.write((char *)(&info), sizeof(Record));
data.close();
} // Function Ends here
void show_info() {
Record info;
ifstream data("data.txt", ios::app);
data.read((char *)(&info), sizeof(Record));
info.show_data();
data.close();
}
为什么将这种类型的数据(不可读)输入到文本文件中? 请检查我的程序,如果由于这个不可读的数据而出现错误 在文本文件中。
【问题讨论】:
-
您正在将原始内存写入文件。 int 将是 4 个字节的不可读数据(因为它不是作为文本存储在内存中,而是作为二进制补码存储)。然后会有一些可读的文本(取决于编码),但如果你的
name不是 50 个字符长,那么在名称之后剩下的就是内存中的内容。由于您在调试模式下使用 Visual Studio 进行编译,因此未初始化内存的值为0xCD,解码为 latin-1 时为Í -
那我该怎么办?
-
你想达到什么目的?如果你想要一个可读的格式,那么你需要定义确切的格式。如果你想要一个数字和一些文本,那么你需要考虑如何界定它
-
我只想查看文本中的数据,我通过 c++ 程序输入的数据。此外,您在评论#1 中解释的观点能否给我任何清楚地描述我这一点的来源(文章、网址等),因为我没有明白这一点。