如果我打开一个已经在 C++ 中打开的文件会发生什么

2024-01-09

想象一下我声明了一个输出文件。

如果我用这段代码打开它两次会发生什么?它还可以工作吗?

ofstream outfile;
outfile.open("record.txt", std::ofstream::app);
outfile.open("record.txt", std::ofstream::app);

根据文档关于std::ofstream::open https://en.cppreference.com/w/cpp/io/basic_ofstream/open,它的行为方式与std::basic_filebuf::open。根据该函数的文档 https://en.cppreference.com/w/cpp/io/basic_filebuf/open,如果文件已经打开,操作将失败。

这意味着第二次调用std::ofstream::open将使流处于这样的状态failbit https://en.cppreference.com/w/cpp/io/ios_base/iostate已设置。因此,流上的大多数后续操作都将失败,直到该位被清除。为了清除该位,您必须调用std::ofstream::clear https://en.cppreference.com/w/cpp/io/basic_ios/clear。之后,流将再次正常运行。

上面的答案适用于尝试使用相同的文件打开两个文件std::ofstream对象,无论是否是同一个文件。

尝试使用两个不同的文件打开同一个文件std::ofstream对象(您在问题中没有这样做)是一个完全不同的问题。不建议这样做,因为即使操作系统允许多次打开文件,这也可能为每个流对象提供自己的缓冲区,该缓冲区与其他流的缓冲区不同步。这可能会导致文件损坏。但是,如果两个流访问文件中相距很远的完全不同的部分,它可能会起作用(但我仍然不建议冒险)。

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

如果我打开一个已经在 C++ 中打开的文件会发生什么 的相关文章

  • asp:repeater 折叠表行 - 已更新

    我想知道是否有人对我的问题有创造性的解决方案 我有一个从我的数据库填充的转发器 如下所示
  • 使用遗留代码(使用reinterpret_cast)真的是一种很好的技术吗?

    下面的代码来自一篇关于C 面试问题的帖子here https www toptal com c plus plus interview questions 我从来不知道这种技术 尽管它声称是一种很好的技术 我的问题是 什么情况下需要使用它
  • -ffast-math 可以安全地用于典型项目吗?

    在回答我建议的问题时 ffast math 有评论指出这是危险的 我个人的感觉是 在科学计算之外 是可以的 我还假设严肃的金融应用程序使用定点而不是浮点 当然 如果你想在你的项目中使用它 最终的答案是在你的项目上测试它 看看它有多大影响 但
  • 处理器关联组 C#

    我使用的是 72 核的 Windows Server 2016 我看到有两组处理器 我的 net 应用程序将使用一个或其他组 我需要能够强制我的应用程序使用我选择的组 我看到下面的代码示例 但我无法使其工作 我可能传递了错误的变量 我希望应
  • 使用 C 的另一个结构内的灵活长度结构数组

    你好 我正在尝试使用 C 来实现一个简单的结构 2 个盒子 每个盒子包含不同数量的颗粒 main 中传递的粒子的确切数量 我写了以下代码 typedef struct Particle float x float y float vx fl
  • 如何在 Google Mock 中使用可选参数来模拟方法?

    如何使用可选参数模拟方法谷歌模拟 例如 class A public void set enable bool enabled true class MockA public A MOCK METHOD1 set enable void b
  • .Net 支持柯里化泛型吗?

    假设我们有一个嵌套的泛型类 public class A
  • C 编程中的 rand() 问题? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么我总是用 rand 得到相同的随机数序列 https stackoverflow com questions 1108780 why do i always get the same seque
  • Qt 多重继承和信号

    由于 QObject 我在 QT 中遇到了有关多重继承的问题 我知道很多人也有同样的问题 但我不知道该如何解决 class NavigatableItem public QObject Q OBJECT signals void desel
  • 向客户端发送状态码 500 时页面未呈现

    我有一个页面 通用处理程序 我想在该页面上向客户端返回状态代码 500 以指示出现问题 我这样做 Response StatusCode 500 Response StatusDescription Internal Server Erro
  • 如何使用 itextsharp 更改 PDF 公式的按钮图标?

    我目前正在尝试使用 itextsharp 填写预定义的表单 除了添加图像之外 一切正常 这之前已经在 Adob e 的 FDF 工具包中运行过 该工具包已编译为 NET 1 1 这不再适用于 NET 4 0 我改用了 itextsharp
  • 括号内声明的对象的范围

    如果我声明一个这样的对象 void main myclass objectA anotherclass true true 0 即 我通过直接调用后者的构造函数来创建一个 objectA 和另一个对象 anotherclass anothe
  • Qt - 添加超链接到对话框

    有没有办法在 Qt 对话框中添加可点击的超链接 IE 它应该看起来像一个超链接 蓝色文本 当您单击它时 它应该在浏览器中打开该超链接 像这样的东西 Use QLabel setOpenExternalLinks bool 并在标签上设置文本
  • ArrayList 有什么问题?

    最近我问了一个关于 SO 的问题 其中提到了可能使用 c ArrayList 来解决问题 有人评论说使用数组列表不好 我想了解更多有关此的信息 我以前从未听说过关于数组列表的这种说法 有人可以带我了解使用数组列表可能出现的性能问题吗 C n
  • 用 std::generate_n 填充 std::map

    我想填写一个std map using std generate n但无法让它发挥作用 我尝试过的是这样的事情 unsigned number of pairs 5 std map
  • 使用 StartServiceCtrlDispatcher 与 StartService 从 C 语言启动 Windows 服务有什么区别?

    我尝试使用 StartServiceCtrlDispatcher 中所述https msdn microsoft com en us library windows desktop bb540475 v vs 85 aspx https m
  • 对 Action 方法的两个并行 ajax 请求排队,为什么?

    我正在使用 ASP NET MVC 开发一个视频网站 我希望在我的应用程序中拥有的一项功能是转码视频 但由于转码过程可能非常耗时 我想向客户端用户展示该过程的进度 因此 我的架构是使用一个控制器操作来处理整个转码过程 并将其进度写入存储在服
  • C 中的等效 plpgsql 触发器

    我有一个 PostgreSQL 9 0 服务器 并且在某些表上使用继承 因此我必须通过如下触发器模拟外键 CREATE OR REPLACE FUNCTION othertable before update trigger RETURNS
  • 将“C# 友好类型”名称转换为实际类型:“int” => typeof(int)

    我想得到一个System Type给定一个string指定 原始 类型C 友好名称 基本上与 C 编译器读取 C 源代码时的方式相同 我觉得描述我所追求的最好方式是单元测试的形式 我希望存在一种通用技术 可以使以下所有断言通过 而不是尝试对
  • 如何正确处置注入的DLL线程?

    我将一个 DLL 注入到目标进程中 以在玩 MMORPG 时充当助手 当前功能将按键转换为鼠标点击 因为 MMORPG 要求用户移动鼠标才能实现某些功能 这是我所鄙视的 假设我出于某种原因想要取消注入 DLL 我该怎么做呢 这个方法干净吗

随机推荐

  • 如何根据其他列值设置唯一约束

    我编写以下脚本用于客户域维护 在我的脚本中 我想在表中进行修改 如果状态为活动 我想为端口字段设置唯一约束 否则 如果状态为非活动 我不想设置唯一约束 如何根据其他列值设置此约束 请帮我 bin bash echo Enter the Da
  • C# ui Automation [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试在 C 中自动化 gui 这与浏览器自动化相同吗 我如何启动 ui 自动化 如果您使用 WPF Microsoft 有一个非
  • 如何使用 heroku CLI 连接到选定的应用程序

    我正在尝试在 Heroku 上部署我的 Java Web 应用程序 当我制作教程时 我使用创建了一个应用程序赫罗库创建命令 我们可以说它是 name app1 然后我在教程结束后删除了它并创建了一个新的来部署它 让它成为 new app 但
  • 最新的 CSS 父选择器 [重复]

    这个问题在这里已经有答案了 我能找到的关于此的最新信息是W3C 选择器 4 级编辑草稿 http dev w3 org csswg selectors 4 但是 据我所知 它不再提及父选择器 我知道有一个谷歌对此进行的调查 https do
  • 我的 TableView 中分隔线之前的空白

    我有一个关于 UITableView 的问题 我有一个 UITableViewController 并且创建了一个自定义单元格 当我可视化 tableView 时 我在分隔线之前看到了一点空白 正如您在这个屏幕截图中看到的那样 为什么 这是
  • F# 与 OCaml:堆栈溢出

    我最近发现了一个关于适合 Python 程序员的 F http combiol org fs FSUG FS4PPv2 pptx 看完之后 我决定自己实现一个 蚂蚁谜题 的解决方案 有一只蚂蚁可以在平面网格上走动 蚂蚁一次可以向左 向右 向
  • php 分叉问题

    我有以下测试 php 来执行 fork spawn 过程 其中测试还尝试在完成后杀死子进程 僵尸 我希望有一个更有效的流程 其中任何子进程都会尽快从进程表中删除 当前尝试填满了进程表 并导致内存分配问题 导致系统关闭 该应用程序在 Fedo
  • 读取和写入同一个netcat tcp连接

    假设我写入 netcat 连接 tail f file nc localhost 7050 do whatever nc localhost 7050 这里发生的是我们有两个套接字连接 用于执行一些请求 响应 但由于一些原因 这并不理想 我
  • 如何控制 Flexbox 中每列的项目数?

    在弹性容器中 我有 5 个具有列方向的项目 但在一定宽度下 我想每列显示 3 个项目 并强制其他项目换行有没有办法在没有固定高度的情况下做到这一点 我的代码 div class container div class item 1 item
  • 关键事件不适用于多个 ckeditors

    我有这个jsfiddle http jsfiddle net praveen jegan s47M3 41 当用户在屏幕上键入过滤词时 系统会向用户发出过滤词提醒ckeditor 在我的示例中 过滤后的单词are ants and word
  • LinearSVC和SVC(kernel=“线性”)有什么区别?

    I found sklearn svm LinearSVC http scikit learn org stable modules generated sklearn svm LinearSVC html and sklearn svm
  • Git 只允许从开发合并到主控

    我希望能够设置我们的分支 以便合并只能从开发分支进入主分支 我知道这听起来可能很严厉 我应该问自己一个问题 我是否不信任团队中的开发人员 目前我不信任 因为他们刚刚熟悉 Git 我会及时取消该限制 但在那之前这将很有用 是否可以 谢谢 标记
  • oidc-client-js 回调后无状态响应

    我认为这是与 Angular 5 2 8 6 相关的错误 与 Angular 5 2 7 一起工作正常 我创建一个ng5分支 https github com client sdk samples sample angular OidcCl
  • 如何在不通过 PhoneApplicationPage 的情况下访问 WIndows Phone 应用程序中的 NavigationService?

    如何在不通过 PhoneApplicationPage 的情况下访问 Windows Phone 应用程序中的 NavigationService 我的目标是在启动时将其传递给应用程序的主要视图模型 这种技术在 WPF 和 Silverli
  • 使用 LINQ 自动生成类型的简洁参数化查询

    我在工作中结合使用 LINQ 和 Dapper 出于性能原因 我正在用 Dapper 替换我的 LINQ 代码 我有很多通过从 SQL Server 拖放到 Visual Studio 数据库图表中创建的 LINQ 数据对象 在下面的实例中
  • 如何在 Twig 模板中使用 Mustache?它们都有相同的标签分隔符

    我在我的项目中使用 Twig 它使用这些标签 name 我也想将 Mustache 包含在我的项目中 但小胡子也使用相同的标签 name 所以存在冲突并且没有任何效果 Mustache 在他们的文档中提供的解决方案当然不起作用 因为我必须输
  • Gevent猴子解锁

    我正在分多个步骤执行我的程序 其中之一是使用gevent Monkey patch from gevent import monkey monkey patch all 一切都很好 但是我用完之后可以取消补丁吗 我想返回到我的默认套接字函数
  • 实际上,如何从工作区中的目录中删除文件,而这些文件不属于工作区?

    如果我要删除的文件不属于工作区 那么如何从工作区的目录中删除文件 我的文件系统上有一个目录 其中包含从 perforce 获取的文件 但在某些进程运行后 它会在这些目录中创建一些新文件 是否有 perforce 命令可以删除这些生成的不属于
  • 如何调试“4005 路径未找到”错误?

    我正在尝试将 Pusher 与使用 Backbone js 的 Web 应用程序集成 我正在遵循 Pusher 文档中的 Pusher with Backbone 指南 因此 我在应用程序启动时看到 Web 控制台中弹出此错误 Pusher
  • 如果我打开一个已经在 C++ 中打开的文件会发生什么

    想象一下我声明了一个输出文件 如果我用这段代码打开它两次会发生什么 它还可以工作吗 ofstream outfile outfile open record txt std ofstream app outfile open record