c++ - 将二进制文件的一部分读入预先存在的 basic_string 对象

标签 c++

我有一个大的字符串缓冲区和一个输入流

basic_string<uint8_t> *buf = ......;
istream in = ......;

将文件的一部分读入字符串的最有效方法是什么?比如说,文件中的第 0xE3CC 到第 0x1A481 个字节。

这里 istream::read 似乎不是一个答案,因为它读取到一个原始的 char[]。由于数据非常大,因此使用临时变量 [in] 效率不高。

遗憾的是,我没有 C++0x,所以无法使用 copy_n。你有什么建议?谢谢。

最佳答案

buf->resize(size);
in.read(&((*buf)[0], size);

顺便说一句,你真的需要 buf 作为指针吗?

关于c++ - 将二进制文件的一部分读入预先存在的 basic_string 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19515384/

相关文章:

c# - 从通过模态 WinForms 调用的 C++ 调用 IConnectionPointImpl 接口(interface)时出现问题

c++ - 使用 ICU 库的 UTF-8 到 ASCII

c# - UE4 - 对象有反射 - 那为什么要使用 C++?

c++ - 将类型转换为唯一编号的模板元程序

c++ - 保留存储在 STL 容器中的指针指向的值 (unordered_map)

c++ - 为什么较小的 chrono::durations 不会减去?

c++ - 如何在 Visual Studio 2008 中为我的应用程序设置图标?

c++ - Visual Studio C++ - 像在 Eclipse 中一样在鼠标悬停时显示函数代码

c++ - STL映射是如何分配的?堆栈还是堆?

c++ - (Qt 5.7.0) 无法找到或加载 qt 平台插件 "windows"