我想以以下方式使用 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>>
来加载文件的部分。这是可能的吗?为什么上述代码不起作用?