读书人

ostreamlt;intgt;作用于fstream,保存的却是

发布时间: 2012-04-16 16:20:04 作者: rapoo

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

读书人网 >C++

热点推荐