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();
}