2016-12-01 116 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

相关问题