我想将非 Unicode 的 16 位字写入文件,稍后再读回。我知道通过一些字节操作我可以在char
模式下使用fstream::read()
and来做到这一点fstream::write()
。我需要做什么才能直接使用 16 位字?
例如,似乎我应该能够执行以下操作:
basic_ofstream<uint16_t> aw;
aw.open("test.bin", ios::binary);
uint16_t c[] = {0x55aa, 0x1188};
aw.write(c, 2);
aw.close();
basic_ifstream<uint16_t> ax;
ax.open("test.bin", ios::binary);
uint16_t ui[2];
ax.read(ui, 2);
ax.close();
cout << endl << hex << unsigned(ui[0]) << " " << unsigned(ui[1]) << endl;
gcc 4.4 输出:
d 0
VC++10 输出:
CCCC CCCC
我也尝试过使用std::basic_filebuf<uint16_t>
直接并得到相同的结果。为什么?