在 C 中可以编写(故意忽略任何检查)
const int bytes = 10;
FILE* fp = fopen("file.bin","rb");
char* buffer = malloc(bytes);
int n = fread( buffer, sizeof(char), bytes, fp );
...
并将n
包含实际读取的字节数,可能小于 10(字节)。
你如何在 C++ 中做同样的事情?
我有这个,但它似乎不是最理想的(感觉很冗长并且需要额外的 I/O),有没有更好的方法?
const int bytes = 10;
ifstream char> pf("file.bin",ios::binary);
vector<char> v(bytes);
pf.read(&v[0],bytes);
if ( pf.fail() )
{
pf.clear();
pf.seekg(0,SEEK_END);
n = static_cast<int>(pf.tellg());
}
else
{
n = bytes;
}
...