【发布时间】:2009-07-20 18:01:15
【问题描述】:
我正在尝试通过以下方式使用fstream 加载二进制文件:
#include <iostream>
#include <fstream>
#include <iterator>
#include <vector>
using namespace std;
int main()
{
basic_fstream<uint32_t> file( "somefile.dat", ios::in|ios::binary );
vector<uint32_t> buffer;
buffer.assign( istream_iterator<uint32_t, uint32_t>( file ), istream_iterator<uint32_t, uint32_t>() );
cout << buffer.size() << endl;
return 0;
}
但它不起作用。在 Ubuntu 中,它因std::bad_cast 异常而崩溃。在 MSVC++ 2008 中,它只打印 0。
我知道我可以使用file.read 来加载文件,但我想使用迭代器和operator>> 来加载部分文件。那可能吗? 为什么上面的代码不起作用?
【问题讨论】:
-
上述二进制数据的来源是什么?
-
二进制数据可以是图像或类似的东西。
标签: c++ stl file-io filestream fstream