istream_iterator读取二进制文件的问题,请熟悉STL的DX们帮忙
我试图使用istream_iterator读取一个二进制文件(以short为单位):
ifstream infile("binaryfile");
vector<short> vec_test;
istream_iterator ins(infile), eos;
copy(ins, eos, inserter(vec_test, vec_test.begin()));
但是发现数据并没有读到vector里面:(infile肯定是打开了,但vector.size()==0)
当我把ins连到cin上(ins(cin)),也就是从屏幕输出数字时,
是可以把内容读到vector里面去的。
比较两种输入方式,我觉得主要差别有两点:一是屏幕输入每个数字的后面都要有一个回车(换行)符号;二是屏幕输入要以一个非数字字符作为结束标志。而这两样在二进制文件里似乎都不存在。
我现在不清楚这种差异是由于cin导致的还是由于istream_iterator的输出方式要求必须在每个读写单位之间存在特定类型的Manipulator?
请教各位如何解决这个问题?
如果不能的话,用输入输出流如何方便简洁的读取二进制文件,而不必采用文件指针的笨拙办法?