我知道如何初始化一个int变量并将其写入文件,但是如何将这个int变量作为用户输入,将其写入文件然后读取? 我认为它应该按如下方式完成,但是当我打开我正在编写的文件时,它只有字符串类型变量“name”和一些非人类可读代码而不是int变量“age”。 这里的程序是具有属性名称和年龄的类的名称。
void save()
{
ofstream out;
out.open("program.txt", ios::out | ios::binary | ios::app);
if (!out)
cout << "cannot save";
else
{
program *temp = first;
while (temp != NULL)
{
out.write( (char)*temp, sizeof(program));
temp = temp->next;
}
out.close();
}
}
答案 0 :(得分:0)
您正在以二进制模式向文件写入自定义对象类型。您看到的是包含program
类型对象的文件。
如果您想要人类可读的文件输出,请尝试在不使用ios::binary
的情况下写入文件。但请记住,您无法将对象写入文件。您必须将对象中的单个成员编写并编写它们。
希望我有意义。
以此程序为例。这很有效。
# include <string>
# include <fstream>
# include <iostream>
using namespace std;
struct program {
int age;
string name;
program* next;
};
program* first = new program;
void save()
{
ofstream out;
out.open("program.txt", ios::out | ios::app);
if (!out)
cout << "cannot save";
else
{
program *temp = first;
while (temp != NULL)
{
out<<temp->age<<" "<<temp->name<<"\n";
temp = temp->next;
}
out.close();
}
}
int main()
{
first->age=10; first->name="Alice";
first->next = new program;
first->next->age=20; first->next->name="Bob"; first->next->next = NULL;
save();
return 0;
}