структура не была записана в двоичный файл в C ++ - PullRequest
0 голосов
/ 22 апреля 2019

Я хочу записать некоторые структуры в двоичный файл, но он не был записан. Он написал, что размер файла больше 0 buf, когда я смотрю на него в программе просмотра hex, я не вижу структур. Это также не было прочитано от этого. Я знаю, что открыл его правильно и не нашел проблемы.

Пример:

enum CellType
{
    WHITE = 0,
    BLACK = 1,
    EMPTY = 2,
    OUT = 3
};
struct Cell {
    int nRow;
    int nCol;
    CellType type;
};

void main() {
    cout << "enter file name" << endl;

    cin >> fileName;
    ofstream fsBoardBinFile;
    fsBoardBinFile.open(fileName, ios::binary|ios::out);
    Cell s1 = { 1,1,BLACK };
   fsBoardBinFile.write(reinterpret_cast<char*>(&s1), sizeof(Cell));
    fsBoardBinFile.close();
}

1 Ответ

0 голосов
/ 22 апреля 2019

Используйте int main(), как предложил Джеспер Джул, и попробуйте fsBoardBinFile.write(reinterpret_cast<char*>(&s1), sizeof(s)); Также используйте оператор + вместо strcat, если вы используете std :: string. Поскольку вы не указали, что такое CellType, я удалил его. Для просто int:

fsBoardBinFile.write(reinterpret_cast<char*>(&s1), sizeof(s1));

записывает 11 (asci: 11), а не номер 1 (ascii: 49) в файл. Использование

ifstream fsBoardBinFile1(fileName);
    fsBoardBinFile1<<((char*)&s2, sizeof(Cell));
    cout << s2.nRow << s2.nCol << endl;

выводит 11 на экран, поэтому кажется, что это работает нормально. Если есть проблема с CellType, вам нужно обновить код, чтобы он включал его.

...