首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

ostream_iterator是怎么自动把整数转成char的? 能让它不要转么

2012-04-25 
ostream_iterator是如何自动把整数转成char的? 能让它不要转么?下面一个小程序,把两个int写入到文件。但是

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

热点排行