如何将文件内容读入istringstream?

2023-11-27

为了提高从文件读取的性能,我尝试将大(几个 MB)文件的全部内容读入内存,然后使用 istringstream 访问信息。

我的问题是,读取此信息并将其“导入”到字符串流中的最佳方式是什么?这种方法的一个问题(见下文)是,在创建字符串流时,缓冲区会被复制,内存使用量会增加一倍。

#include <fstream>
#include <sstream>

using namespace std;

int main() {
  ifstream is;
  is.open (sFilename.c_str(), ios::binary );

  // get length of file:
  is.seekg (0, std::ios::end);
  long length = is.tellg();
  is.seekg (0, std::ios::beg);

  // allocate memory:
  char *buffer = new char [length];

  // read data as a block:
  is.read (buffer,length);

  // create string stream of memory contents
  // NOTE: this ends up copying the buffer!!!
  istringstream iss( string( buffer ) );

  // delete temporary buffer
  delete [] buffer;

  // close filestream
  is.close();

  /* ==================================
   * Use iss to access data
   */

}

std::ifstream有一个方法rdbuf(),返回一个指向filebuf。然后你可以“推”这个filebuf进入你的stringstream:

#include <fstream>
#include <sstream>

int main()
{
    std::ifstream file( "myFile" );

    if ( file )
    {
        std::stringstream buffer;

        buffer << file.rdbuf();

        file.close();

        // operations on the buffer...
    }
}

编辑:正如马丁约克在评论中所说,这可能不是自stringstream's operator<<将逐个字符读取 filebuf。您可能想检查他的答案,他使用ifstream's read像以前一样的方法,然后设置stringstreambuffer 指向先前分配的内存。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将文件内容读入istringstream? 的相关文章

随机推荐

  • Android 中的反向音频文件

    我正处于开发这个应用程序的早期阶段 但研究它我已经遇到了一个问题 我需要能够向后播放音频文件 你知道喜欢揭示隐藏的消息 我没有在 Android 上处理音频的经验 也不知道这是否可能 我在这里发现了一个问题 它解决了java中的问题 点击这
  • 所有任务的单个工作线程还是多个特定工作线程?

    我正在使用 PyQt5 创建一个简单的 GUI 应用程序 其中我从 API 请求一些数据 然后使用这些数据填充 UI 的各种控件 我在 PyQt 中关注的有关工作线程的示例似乎都是子类QThread然后在重写中执行他们的业务逻辑run 方法
  • 将数据帧写入 csv 文件时解决错误“分隔符必须是 1 个字符的字符串”

    使用这个问题 Pandas 将数据帧写入 CSV 文件作为模型 我编写了以下代码来制作 csv 文件 df to csv Users Lab Desktop filteredwithheading txt sep s header True
  • C++ 中的 Realloc 等效项

    是的 另一个realloc vs std vector问题 我知道你要说什么 我同意 忘记手动内存分配 只需使用std vector 不幸的是 我的教授禁止我在这项作业中使用 STL 中的任何内容 所以是的 我有一个动态数组T我需要调整它的
  • 如何使用 Nokogiri 和 Ruby 解析 JavaScript

    我需要从网站中解析一个数组 我想要解析的 JavaScript 部分如下所示 arPic 0 http example org image1 jpg arPic 1 http example org image2 jpg arPic 2 h
  • Wix / MSI:无法卸载

    我为一个内部项目开发了一个 Wix 安装程序 但是完全偶然 我发现我无法在我的开发计算机上卸载该安装程序 因为我收到以下错误消息 您尝试使用的功能所在的网络资源不可用 有一个对话框指向我从功能安装的 msi 的路径 msi 在那里 但是它已
  • 类定义内的自引用

    如何在类定义中引用类对象 你能告诉我你会怎么做吗 或者更具体地说 如何在类方法的装饰器中传递类对象 这是一个简单的例子 我试图将我声明的第二个方法传递给第一个方法的装饰器 def decorate w def wrap f def call
  • preg_replace:错误的正则表达式==“未知修饰符”?

    我正在编造虚假的电子邮件地址 我只是想确保它们采用有效的电子邮件格式 因此我尝试删除不在以下集合中的任何字符 jusr email preg replace a zA Z0 9 g jusr email 我在 Windows 机器上没有遇到
  • Laravel 5 + AngularJS 跨域 CORS

    我到处寻找答案 但到目前为止没有任何效果 堆栈上列出的所有解决方案尚未被证明是足够的 我的 laravel 日志中没有任何错误形式的信息 我只得到标准 XMLHttpRequest cannot load http api domain d
  • 弹性项目是否应该溢出弹性容器而不是换行?

    我有这样的布局 A row 柔性容器 with a 确定尺寸 e g width 175px A flex item 与一个在definite flex basis e g flex basis content 这是不灵活的 例如flex
  • 为 Scikit-image 构建自定义 AWS Lambda 层

    Outline 我需要使用scikit image在一些 AWS lambda 函数内部 所以我希望构建一个自定义 AWS lambda 层 其中包含scikit image 我的问题一般应该适用于任何 python 模块 尤其是 scik
  • .NET 反射的“成本”是多少? [复制]

    这个问题在这里已经有答案了 可能的重复 NET 反射的成本有多高 我目前的编程心态是反思是我最好的朋友 我经常使用它来动态加载内容 允许 松散实现 而不是严格的接口 以及许多自定义属性 使用反射的 实际 成本是多少 对于频繁反射的类型是否值
  • 如何检测webgl中的碰撞?

    如何在不使用诸如 Three js 之类的库的情况下检测 webgl 中的碰撞 如何在webgl中检测碰撞 你不知道 WebGL 与 OpenGL 一样 仅用于绘图 它不管理场景 它没有 对象 或碰撞等高级事物的概念 这都是关于点 线 三角
  • 如何为所有浏览器使用 jQuery 绑定到 localStorage 更改事件?

    如何使用 jQuery 将函数绑定到 HTML5 localStorage 更改事件 function window bind storage function e alert storage changed localStorage se
  • 如何清除日期选择器

    我有一个日期选择器用于选择生日 这将用于一些过滤 过滤后 我希望该值为重置 即 DatePicker 应该变为空白 有什么帮助吗 如果您想清除TextField of the DatePicker 您可以使用 datepicker getE
  • 找不到 ffprobe?

    我正在尝试在我的节点项目中生成视频缩略图 thumbsupply 和 video thumbnail npm 都返回相同的错误 称为not found ffprobe const thumbsupply require thumbsuppl
  • iOS 可以使用 TTS 吗

    有谁知道在iOS开发中是否可以像Android一样实现TTS 是在图书馆还是什么地方 我相信我听说过一些有关 iOS 中的实用程序和 TTS 的信息 但我很难找到有关此问题的任何文档 任何帮助 将不胜感激 flite TTS 已转为 iOS
  • 在 Javascript 中添加延迟

    我需要在我的 Javascript 代码中添加大约 100 毫秒的延迟 但我不想使用setTimeout的功能window对象 我不想使用繁忙的循环 有没有人有什么建议 很遗憾 setTimeout 是唯一的reliable方式 不是唯一的
  • 如何从给定的 hunspell 词典中获取所有可能的单词?

    我想解析支持 hunspell 格式的开放办公室aff and dic files English aff and dic文件可以从这里下载 例如 http extensions openoffice org en project engl
  • 如何将文件内容读入istringstream?

    为了提高从文件读取的性能 我尝试将大 几个 MB 文件的全部内容读入内存 然后使用 istringstream 访问信息 我的问题是 读取此信息并将其 导入 到字符串流中的最佳方式是什么 这种方法的一个问题 见下文 是 在创建字符串流时 缓