ostream作用于fstream,保存的却是char,为什么?该如何解决
ostream<int>作用于fstream,保存的却是char,为什么?
一小段程序,就几行:
为什么得到的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,"")); }
为什么得到的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(); }