以下代码的目的是以块的形式从文件中读取数据,然后调用传入此分块数据的函数。
std::ifstream fileData("file.jpg", std::ios::binary);
const int chunkSize = 1024 * 1024;
char* buffer = new char[chunkSize];
fileData.read(buffer, chunkSize);
std::istringstream chunkedFileData(std::string(buffer, chunkSize));
fcn(chunkedFileData); // void fcn(std::istream& s);
目前,我使用istream::read
提取特定数量的字符并存储在缓冲区数组中。然后我从缓冲区构造一个istringstream
,因为以下函数需要引用istream
。
是否可以避免使用中间数组并将特定数量的字符读取到流中?