我想将一些结构写入二进制文件,但尚未编写。它写道,当我在十六进制查看器中查看文件时,文件大小大于0 buf,但看不到结构。它也没有被读取。我知道我已正确打开它,但没有发现问题。
示例:
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();
}
答案 0 :(得分:0)
使用Jesper Juhl建议的int main()
并尝试
fsBoardBinFile.write(reinterpret_cast<char*>(&s1), sizeof(s));
如果您使用的是std :: string,也请使用+
运算符而不是strcat。由于您尚未包括什么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
出现问题,则需要更新代码以包含其内容。