如何获取int变量的输入并将其写入文件?

时间:2015-11-14 07:41:01

标签: c++ oop fwrite

我知道如何初始化一个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();
    }
}

1 个答案:

答案 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;
}