我将数据插入文本文件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();
}
为什么将这种类型的数据(不可读)输入文本文件? 如果由于这个不可读的数据而出现错误,请检查我的程序 在文本文件中。
答案 0 :(得分:0)
ifstream data("data.txt", ios::app);
ios::app
是附加标志。请勿将其与ifstream
一起使用。由于您正在阅读二进制数据,因此对ios::binary
和ofstream
使用ifstream
标记。
显然,您希望以文本形式保存数据(明智的选择)。使用data >> info.name
和data >> info.id
代替写入数据。
您也可以使用std::string name
代替char name[50]
。如果您想阅读整行,请使用std::getline
。
class Record {
public:
int id;
std::string name;
void Record::insert_data() {
cout << "Name: ";
getline(cin, name); //reads the whole line
cout << "ID: ";
cin >> id;
}
void Record::show_data() {
cout << "Name: " << name << ", ID: " << id << "\n";
}
};
void write_info() {
Record info;
info.insert_data();
ofstream data("data.txt", ios::app);
data << info.name << "\n" << info.id << "\n";
}
void show_info() {
Record info;
ifstream data("data.txt");
while(true) {
if(!data.good()) break;
data >> info.name;
if(!data.good()) break;
data >> info.id;
info.show_data();
}
}