Проблема с вводом-выводом бинарных файлов

82
03 октября 2021, 11:00

Проблема возникает на этапе чтения из файла, так как я открыл файл hex редактором, и в нем число есть. Что я делаю не так?

#include <iomanip>
#include <fstream>
#include <vector>
#include <cmath>
#include <iostream>

using namespace std;
int main() {
    ifstream fin("input.bin", ios::binary | ios::in);
    ofstream fout("input.bin", ios::binary | ios::out);
    int x = 499;
    int y;
    fout.write((char*)&x, sizeof(int));

    fin.read((char*)&y, sizeof(int));
    cout << y;

    fout.close();
    fin.close(); 
}
Answer 1

И все же считаю, что сначала нужно поработать с файлом на запись, закрыть, а уже потом работать на чтение.

Если у вас до начала программы файла нет - как вы его открываете для чтения?

int main()
{
    int x = 499;
    cout << "x= " << x << "\n";
    int y;
    ofstream fout("input.bin", ios::binary);
    if (!fout.is_open()) cout << "Error out\n";
    fout.write((char*)&x, sizeof(int));
    fout.close();
    ifstream fin("input.bin", ios::binary);
    if (!fin.is_open()) cout << "Error in\n";
    fin.read((char*)&y, sizeof(int));
    fin.close();
    cout << "y="<<y<<"\n";
}
Answer 2

После записи данных нужно сделать .flush(). Кэш файловой системы и все дела...

// g++ -Wall -std=c++11 input.cpp
#include <iomanip>
#include <fstream>
#include <vector>
#include <cmath>
#include <iostream>

using namespace std;
int main() {
    ifstream fin("input.bin", ios::binary | ios::in);
    ofstream fout("input.bin", ios::binary | ios::out);
    int x = 499;
    cout << "x="<<x<<"\n";
    int y;
    fout.write((char*)&x, sizeof(int));
      fout.flush();

    fin.read((char*)&y, sizeof(int));
    cout << "y="<<y<<"\n";

    fout.close();
    fin.close(); 
}
READ ALSO
Как можно сократить время компиляции в c++

Как можно сократить время компиляции в c++

Я написал программу и начал проверять ееУ нее стоит условие, что время выполнения меньше 1 секунды

91
Вопросы по поводу inline (встраивания) геттеров

Вопросы по поводу inline (встраивания) геттеров

Я пытался разобраться со встраиванием сам, но не особо уверен в некоторых деталяхНасколько я понял встраивание происходит автоматически,...

218
Вывод символа новой строки в неизвестный поток

Вывод символа новой строки в неизвестный поток

Как правильно вывести символ новой строки в поток std::ostream, передаваемый функции?

83
JavaScript отладка

JavaScript отладка

У меня есть функция на 20000 строк

286