在C可以寫(故意忽略任何檢查)的fread當量與fstream的
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;
}
...
你可以做C的方式,但我認爲這可能不是你在找什麼。 –
有什麼理由不使用[統計](http://linux.die.net/man/2/stat)?順便說一句,我認爲使用文件流方法是C++的方式。 – shinkou