2016-12-01 110 views
0

有人可以知道這是否正確嗎? 我嘗試逐行讀取二進制文件並將其存儲在緩衝區中?它存儲在緩衝區中的新行是否刪除了先前存儲的行?從二進制文件讀取並存儲到緩衝區

 ifs.open(filename, std::ios::binary); 
     for (std::string line; getline(ifs, line,' ');) 
       { 
        ifs.read(reinterpret_cast<char *> (buffer), 3*h*w); 

       } 

回答

1

出於某種原因,你混合getline這是基於文本的閱讀,和read(),這是二進制讀數。

此外,什麼是buffer以及它的大小是完全不清楚的。所以,下面是一個簡單的例子,您可以開始:

ifs.open(filename, std::ios::binary); // assume, that everything is OK 

constexpr size_t bufSize = 256; 
char buffer[bufSize]; 
size_t charsRead{ 0 }; 
do { 
    charsRead = ifs.read(buffer, bufSize) 
    // check if charsRead == 0, if it's ok 
    // do something with filled buffer. 
    // Note, that last read will have less than bufSize characters, 
    // So, query charsRead each time. 
} while (charsRead == bufSize); 
+0

我必須讀取ppm文件並將其存儲到緩衝區。緩衝區的大小必須是高度*重量* 3。那麼,你認爲這種方法對此很快嗎?謝謝 – madrugadas25845

+0

方法是絕對可以的,你只需要它來調整你的ppm – Starl1ght