将 ifstream 转换为 bool 与使用 ifstream::is_open() 之间的区别

2023-12-25

也许是一个虚拟问题,但我需要一个明确的答案。这些函数的返回有什么区别吗

int FileExists(const std::string& filename)
{
  ifstream file(filename.c_str());
  return !!file;
}

int FileExists(const std::string& filename)
{
  ifstream file(filename.c_str());
  return file.is_open();
}

换句话说,我的问题是:是否铸造fstream to bool给出完全相同的结果fstream::is_open()?


No. is_open仅检查是否存在关联文件,而强制转换为bool还检查文件是否已准备好进行 I/O 操作(例如,流处于良好状态)(C++11 起)。

is_open http://en.cppreference.com/w/cpp/io/basic_ifstream/is_open

检查文件流是否有关联的文件。

std::basic_ios::operator bool http://en.cppreference.com/w/cpp/io/basic_ios/operator_bool

如果流没有发生错误并且准备好进行 I/O 操作,则返回 true。具体来说,返回!fail().

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

将 ifstream 转换为 bool 与使用 ifstream::is_open() 之间的区别 的相关文章

  • 结构化绑定中缺少类型信息

    我刚刚了解了 C 中的结构化绑定 但有一件事我不喜欢 auto x y some func is that auto正在隐藏类型x and y 我得抬头看看some func的声明来了解类型x and y 或者 我可以写 T1 x T2 y
  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置

随机推荐

  • 如何对元组列表进行分组?

    Note 我当然知道如何在显式 for 循环中做到这一点 但我正在寻找一个更具可读性的解决方案 如果可能的话 我想通过使用一些内置功能来解决这个问题 最好的情况是这样的 result groupby logic 假设有以下列表 import
  • 您是否应该更喜欢重载而不是函数模板的专门化?

    我的一本教科书指出 您可以为标准库函数提供自己的实现 例如swap x y 通过模板专门化或函数重载 这对于任何可以从赋值交换以外的东西中受益的类型都很有用 例如 STL 容器 我知道 它已经编写了交换 我的问题如下 更好的是 模板专业化为
  • 向正在等待 TCP 的线程发送指令?

    我试图理解 TCP 中的多线程 所以我正在编写一个基本的 telnet 文本 路由器 using ReadLine 每个使用 TCP 侦听器的线程将等待来自 telnet 客户端的输入 然后根据发送的文本进行响应 我将其与多个线程和多个 t
  • 尝试让 CUDA 7.5 与 GCC 5.x 一起工作

    因此 如果您在系统 GCC 版本为 5 及更高版本时尝试使用 nvcc 则会收到 版本不受支持 错误 但是 我听说人们报告说他们刚刚对此进行了评论 并且 CUDA 7 5 与 GCC 5 x 一起 为他们工作 然而 当我做同样的事情时 支票
  • 如何改变android中数组元素的颜色? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我只是想知道 我们可以更改特定数组索引的颜色吗 我有一个以下数组 String all 1 2 3 4 5 6 7 8 9 10 所以 我想
  • 使用大的静态变量是一个坏主意吗?

    我使用 ASP NET MVC 4 我想加载大量数据并使其在我的所有类中都可以访问 这是我的代码的简约示例 public class MyController Controller public static List
  • 数据库中的重复条目

    我有一个巨大的产品表 但有很多重复的条目 该表有超过 10000 个条目 我想删除其中的重复条目 而不需要手动查找并删除它 如果您能为我提供解决方案 请告诉我 你可以使用SELECT DISTINCT INTO TempTable 删除原始
  • 创建图像而不将其存储为本地文件

    这是我的情况 我想从用户上传的图像创建一个调整大小的 jpeg 图像 然后将其发送到 S3 进行存储 但我希望避免将调整大小的 jpeg 写入磁盘 然后为 S3 请求重新加载它 有没有办法完全在内存中完成此操作 并将图像数据 JPEG 格式
  • 将光标设置到 contenteditable div 的末尾

    如果当前标签为空 我试图将光标设置到下一个 上一个 contenteditable 标签的末尾 但是当我设置焦点时 它将焦点添加到文本的开头而不是结尾 尝试了几乎所有的解决方案 但似乎没有一个对我有用 这是我正在尝试的简单代码 HTML代码
  • 在android中查询“dumpsys meminfo”

    当我在 android 4 2 上运行 adb shell dumpsys meminfo 时 我得到的结果如下 Shared Private Heap Heap Heap Pss Dirty Dirty Size Alloc Free N
  • 如何使用 Selenium IDE 上传文件?

    这在过去是有效的 但最近我一直在尝试使用 Selenium IDE 上传文件 现在我收到此错误 错误 意外异常 代码 gt 1000 INDEX SIZE ERR gt 1 DOMSTRING SIZE ERR gt 2 HIERARCHY
  • 在 MVC 5 中使用 ModelClientValidationRule 抛出错误?

    我尝试在 MVC 5 项目中进行自定义客户端验证 当我添加以下代码时 public IEnumerable
  • 在一个txt文件中搜索多个字符串

    我确实知道对此还有多个其他答案 但它们不适合我的代码 因为我的代码每次搜索必须处理 1000 行以上 我想组合 2 个输入的字符串 以便 PHP 脚本在 txt 文件中搜索这两个字符串 并在输出时组合它们 这是我尝试过的 search GE
  • 为什么当我从网络浏览器打开它并在Java中读取它时,html源代码是不同的? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有一个关于解析在线 html 页面
  • CakePHP:提交失败时清除密码字段

    问候 我正在设置一个带有密码字段的非常标准的注册表单 问题是 提交失败后 由于字段为空 格式不正确等 控制器会重新加载注册页面 但密码字段包含先前输入的密码的哈希值 每次提交失败后如何将其清空 View echo form gt passw
  • 使用 selectize 从选定内容获取文本

    我试过这个 var eventHandler function return function console log select val var select selectize selectize create true onChan
  • 原则 2,本机查询

    我正在尝试使用 Doctrine 2 进行本机查询 但我无法使其工作 q SELECT FROM user recent activity WHERE id user gt id rsm new Doctrine ORM Query Res
  • 运行时错误“1004”无法获取 WorksheetFunction 类的 Match 属性

    nSectionSetupRow Application WorksheetFunction Match Worksheets Items Cells nRow 1 Worksheets SectionSetup Range B1 B Wo
  • 下一个/路由器和下一个/导航有什么区别?

    在 Next js 中 我都知道next router and next navigation have a useRouter hook 但是返回的对象不同 为什么 Next js 在两个路由包上有相同的钩子 The useRouter
  • 将 ifstream 转换为 bool 与使用 ifstream::is_open() 之间的区别

    也许是一个虚拟问题 但我需要一个明确的答案 这些函数的返回有什么区别吗 int FileExists const std string filename ifstream file filename c str return file in