如何确保在关闭 fstream 之前将数据写入磁盘?

2023-12-05

下面的内容看起来很合理,但我听说即使在 close() 调用之后,理论上数据仍然可以位于缓冲区中而不是磁盘上。

#include <fstream>

int main()
{
    ofstream fsi("test.txt");

    fsi << "Hello World";

    fsi.flush();

    fsi.close();

    return 0;
}

您无法使用标准工具来实现此目的,并且必须依赖操作系统设施。 对于 POSIXfsync应该是你需要的。由于无法从标准流获取 C 文件描述符,因此您必须在整个应用程序中求助于 C 流,或者只是打开文件以刷新磁盘。或者有sync但这会冲水all缓冲区,您的用户和其他应用程序会讨厌它。

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

如何确保在关闭 fstream 之前将数据写入磁盘? 的相关文章

随机推荐

  • 将 char 指针作为结构成员写入文件问题

    我有一个 char 结构成员 并在结构初始化时将其分配给字符串文字 John 如下所示 使用 printf 可以很好地打印字符串 但是 如果我使用 fwrite 将此字符串写入文件 则在文件中我会读回垃圾 如果我使用 char 数组而不是
  • 如何链接到动态升压库?

    我编译了 boost lib 并得到了这些 Shared dynamic link libraries 24 03 2010 11 25 PM 53 248 boost thread vc80 mt 1 42 dll 24 03 2010
  • Rails 4 中命名空间路由的单独域

    我正在开发 Rails 4 应用程序 该应用程序的一部分是客户门户 必须从单独的域访问 通过导航到 我一切正常domain com cp 路由使用命名空间控制器 namespace cp do get dashboard to dashbo
  • eclipse中不在工作区中的项目的位置

    我有多个项目存储在我的本地计算机上 但不在我正在使用的 Eclipse 工作区中 但是当我打开同一个 Eclipse 工作区时 项目就在那里 这是如何实现的 工作区的元数据中是否有一个设置指定项目的存储位置 使用这种方法而不是将项目存储在工
  • Angular 4 - rxjs BehaviourSubject 在服务中的使用

    我的服务代码如下所示 数据服务 Injectable export class DataService private serviceRequestDtoSource new BehaviorSubject
  • PFLogInViewController 不再被识别?

    我正在 iOS 8 上使用最新版本的 Parse 构建 iPhone 应用程序 有人知道 PFLogInViewController 是否仍然存在吗 我很难将其纳入我的项目中 Parse 的其他一切都工作得很好 唯一的问题是 PFLogIn
  • PrettyFaces 与必需属性发生错误

    我正在使用开发一个网络应用程序JSF 2 and 漂亮脸蛋 我注释了我的一个 ViewScoped带有漂亮注释的bean 这就是我所拥有的 ManagedBean ViewScoped URLMapping parentId app lis
  • db.collection 不是一个函数 React / Firestore

    尝试使用 React 将 Firestore 实现到 LinkedIn 克隆中 我相信导入 Firebase firestore 的新方式如下 firebase js import initializeApp from firebase a
  • SparkR显示汉字错误

    我是SparkR新手 这几天遇到一个问题 将包含中文字符的文件转换成SparkR后 它不再正确显示 像这样 city c 北京 上海 杭州 A lt as data frame city A city 1 北京 2 上海 3 杭州 然后 我
  • Ruby/Rack 中的多部分响应

    我希望我的服务器发送多部分响应 multipart x mixed replace 我更喜欢使用 Sinatra 框架或通用 Rack 应用程序的某种解决方案 但 ruby 中的任何示例都很好 这相当于我在 PHP 中尝试做的事情 n pr
  • 这个 array_multisort() 为什么/如何工作?

    Code
  • 如何知道 iOS 设备何时插入?

    有没有办法知道我的设备 iPhone 何时插入电源 例如带有 USB 端口的计算机或汽车音响系统 我在我的应用程序中使用本地化服务 我想更改为kCLLocationAccuracyBestForNavigation当设备插入时自动 谢谢 您
  • C#:使用StreamReader从txt文件中读取行,但Peek()返回-1,即使还剩下很多行

    我使用 StreamReader 的 Peek 方法来检查是否还有更多行需要处理 我的文件中有 1000 多行 但是 Peek 在到达第 750 行时突然返回 1 我检查过 但第 750 行和第 751 行似乎没有区别 即使我删除了第750
  • 如何避免 MDIParent 表单调整大小

    我正在设计一个 Windows 窗体应用程序 我有一个 MDIParent 表单 它以最大化状态加载 并以最大化状态加载其子表单 但是 当我打开 OpenFileDialog 或任何数据读取器对象时 MDIParent 及其所有窗体和控件都
  • 如何在R中找到最短路径[关闭]

    Closed 这个问题需要调试细节 目前不接受答案 问题 我有一个数据框 其中包含一组带有纬度和经度信息的点 我们需要从 A 开始 遍历其他每个节点一次 并在任意点结束 目标是最小化总的半正矢距离 df lt data frame name
  • TTS - CHECK_VOICE_DATA_FAIL - 检查引擎是否可用

    我的 TTS 引擎有一个奇怪的问题 我不知道为什么 我的错误在哪里 搜索了几个小时寻找解决方案 但没有任何可提及的结果 当我使用这个时API演示代码一切正常 我可以听到所有已安装语言的声音 但是当我检查时这个方法我收到 CHECK VOIC
  • 将默认光标更改为繁忙光标无法按预期工作

    经过多次尝试JProgressBar按照预期的工作 我终于成功地实现了我的目标 我曾经用过 疯狂程序员 s advice并使用了SwingWorker最终让程序按我想要的方式工作 Now I want the cursor to chang
  • 声明 lambda 必须使用大括号吗?

    准备 C 考试 我对语句 lambda 必须使用大括号 感到困惑 我从底部的控制问题中了解到这一点 下面的 Lambda 没有大括号就可以了 class A public static Func
  • Windows Azure 上的 EF 6 和空间类型 DbGeography

    我花了几天非常沮丧的时间试图让空间类型 DbGeography 在 Windows Azure 上工作 我有一个带有 Webrole 的 Windows Azure 项目 我在其中使用 DbGeography Distance 方法来计算距
  • 如何确保在关闭 fstream 之前将数据写入磁盘?

    下面的内容看起来很合理 但我听说即使在 close 调用之后 理论上数据仍然可以位于缓冲区中而不是磁盘上 include