发现vc的一个bug
一个简单的程序:
#include <fstream>
int main(int argc, char* argv[])
{
using namespace std;
unsigned char data[] = { 0xFF, 0x01, 0x02 };
basic_ofstream<unsigned char> ofs("a.bin", ios_base::binary);
ofs.write(data, sizeof(data));
}
但a.bin中只有0x01和0x02,0xFF丢失了
究其原因,是由于char_traits<unsigned char>也可以实例化,而char_traits<unsigned char>::eof()返回0xFF,所以被认为是eof而不予输出。在g++下,这段程序编译失败,显示找不到char_traits< unsigned char>::eof()。
浙公网安备 33010602011771号