有人可以判断这是否正确? 我尝试逐行读取二进制文件并将其存储在缓冲区中?它存储在缓冲区中的新行是否会删除以前存储的行?
ifs.open(filename, std::ios::binary);
for (std::string line; getline(ifs, line,' '); )
{
ifs.read(reinterpret_cast<char *> (buffer), 3*h*w);
}
答案 0 :(得分: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);