ostream<int>作用于fstream,保存的却是char,为什么?
一小段程序,就几行:
- C/C++ code
int main(void){ fstream fs("d:\\1.dat",ios::out); int buf[]={1,2}; copy(buf,buf+2,ostream_iterator<int>(fs,"")); }为什么得到的1.dat里面是存了char类型的字符1和2而不是两个整数?
我发现d:\1.dat是两个字节大小。证明了是char。
问题是,为什么fs没有写入2进制整数而是写入了char?
我的ostream_iterator模板类型指定了int啊。我明明保存的是int
问题出在哪里?
[解决办法]
- C/C++ code
int main(void){ fstream fs("d:\\1.dat",ios::out); int buf[]={1,2}; copy(buf,buf+2,ostream_iterator<int>(fs,"")); }==>int main(void){ fstream fs("d:\\1.dat",ios::out|ios::binary); int buf[]={1,2}; copy((char*)buf,(char*)(buf+2),ostreambuf_iterator<char>(fs)); fs.close();}