gcc中的basic_ofstream <unsigned char =“”>失败

时间:2015-06-04 07:16:27

标签: c++ gcc

我在下面列出了一些工作代码

ofstream of("/home/joe/test.dat", ios::out | ios::binary);
of.write((char*)&dat[0],dat.size());

但下面的代码不产生输出

basic_ofstream<unsigned char> of("/home/joe/test.dat", ios::out | ios::binary);
of.write(&dat[0],dat.size());

我在linux上尝试使用gcc 4.9。请注意,没有编译警告或错误。

1 个答案:

答案 0 :(得分:2)

这不起作用:

basic_ofstream<unsigned char> of("/tmp/test2.dat", ios::out | ios::binary);
of.write(&dat[0],dat.size());  

但这有效:

basic_ofstream<char> of("/tmp/test3.dat", ios::out | ios::binary);
 of.write((char*)&dat[0],dat.size());  

实现没有义务提供std::char_traits<unsigned char>的实例化,以及那些具有不兼容实例化的实例。它可能适用于特定的编译器,但它不是必需的。