从二进制文件读取并存储到缓冲区

时间:2016-12-01 10:49:39

标签: c++ file binary line

有人可以判断这是否正确?    我尝试逐行读取二进制文件并将其存储在缓冲区中?它存储在缓冲区中的新行是否会删除以前存储的行?

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

                }

1 个答案:

答案 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);