ostream作用于fstream,保存的却是char,为什么?该如何解决

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