Запись структурных переменных в файл на c ++ - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь сохранить структурную переменную в файле в Visual C ++. Вот мой код:

#include<iostream>
#include<fstream>

using namespace std;

struct node {
    int key;
};

int main() {
    node n1, n2;
    n1.key = 39;
    ofstream fout("data.txt", ios::out);
    //fout.seekp(0);
    fout.write(reinterpret_cast<char*>(&n1), sizeof(node));
    std::cout << "position of put pointer after write: " << fout.tellp() << '\n';
    //fin.seekg(-1);
    ifstream fin("data.txt", ios::in);
    fin.read(reinterpret_cast<char*>(&n2), sizeof(node));
    std::cout << "Key: " << n2.key;
    return 0;
}

При обратном чтении структуры значение в ключевом поле является ненужным. Я что-то не так делаю?

1 Ответ

1 голос
/ 19 апреля 2020

Закройте fout, прежде чем открывать плавник. Это работает.

#include<iostream>
#include<fstream>

using namespace std;

struct node {
    int key;
};

int main() {
    node n1, n2;
    n1.key = 39;
    ofstream fout("data.txt", ios::out);
    //fout.seekp(0);
    fout.write(reinterpret_cast<char*>(&n1.key), sizeof(node));
    std::cout << "position of put pointer after write: " << fout.tellp() << '\n';
    fout.close();
    //fin.seekg(-1);
    ifstream fin("data.txt", ios::in);
    fin.read(reinterpret_cast<char*>(&n2.key), sizeof(node));
    std::cout << "Key: " << n2.key;
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...