ostream_iterator是如何自动把整数转成char的? 能让它不要转么?
下面一个小程序,把两个int写入到文件。但是我发现ostream_iterator把2进制整数变成了字符串存储了。d:\1.dat的实际内容是6个字节的文本文件102442,而不是我期待的2个2进制整数(共8个字节).
我查看VC的源代码,没有发现ostream_iterator哪个地方做了stringstream<<或者ltoa这样的转换啊。
它怎么就把两个int变成了字符串意义的数字呢?
谢谢!
- C/C++ code
#include"stdafx.h"#include<functional>#include<algorithm>#include<iostream>#include<fstream>#include<iterator>using namespace std;void main(void){ fstream fs("d:\\1.dat",ios::out|ios::binary); int buf[]={1024,42}; copy(buf,buf+2,ostream_iterator<int>(fs,""));}
[解决办法]
不可以.把他当做char来写.ostream_iterator 改为 ostreambuf_iterator好点儿.
- C/C++ code
#include<functional>#include<algorithm>#include<iostream>#include<fstream>#include<iterator>using namespace std;void main(void){ fstream fs("d:\\1.dat",ios::out|ios::binary); int buf[]={1024,42}; copy((char*)buf,(char*)(buf+2),ostreambuf_iterator<char>(fs));}