我有一個用visual studio編寫的C++代碼,它基本上在定時器的每個tick上寫了一組浮點數(70個浮點)到一個二進制文件。數字是從實驗完成的機器獲取的。即使在函數退出後仍保持一個流對象
WriteToFile(float* buffer, int buffersize)
{
ofstream out;
out.open(filename,ios::app)
for(int i =0;i< buffersize ;i++) // buffersize is 70 here
{
out.precision(6);
out.setf(ios::fixed,ios::floatfield);
out.write((const char*) &buffer[i], sizeof(float));
}
}
這個函數被調用的timer.This的每一跳走了這麼多的時間,實驗做我甚至有後等待程序獲取數據,並且把它保存到文件。該減速的原因是,對於每一次打勾,它都需要打開二進制文件,並且必須找到之前停止的位置。如果有辦法,我可以始終打開文件並且位置指針位於相同位置以前停止的位置,我可能會加快它的速度。任何機構有任何建議嗎? 即使在函數退出後,基本上如何保持並打開流動?
嘗試使用ofstream變量和位置指針作爲全局變量,並且只在函數調用之前打開文件一次? –
我可以把ofstream變量作爲全局變量,但是當函數被調用一次時如何保持文件打開? – sarath
有is_open()函數,這裏是參考:[ofstream :: is_open](http://www.cplusplus.com/reference/fstream/ofstream/is_open/)。您可以檢查它是否已經打開,如果尚未打開,請打開它。 –