为什么要为ifstream指定std :: ios :: in?

问题描述

我想使用Error: Missing required argument on main.tf line 19,in resource "azurerm_key_vault" "kv": 19: resource "azurerm_key_vault" "kv" { The argument "tenant_id" is required,but no definition was found. 将字体文件加载到内存中并提供给FreeType。我发现标准的I / O设施有些令人沮丧。现在,我的问题是为什么我必须为ifstream指定std::ios::in?名称ifstream已经暗示了输入操作,那么为什么我们需要这种不必要的混淆呢?我们可以用ifstream指定ifstream吗?如果不指定该怎么办?来自cppreference的示例:

out

此处未使用默认参数std::ifstream f1("test.bin",std::ios::binary);。为什么?

解决方法

现在我的问题是为什么我必须为ifstream指定std::ios::in

你不知道。它将始终通过按位“或”运算附加相应的标志。 documentation明确指出:

首先,执行与默认构造函数相同的步骤,然后 通过调用rdbuf()->open(filename,mode | std::ios_base::in)

将流与文件关联

我们可以指定ifstream不带吗?

是的。这只会要求文件缓冲区也以写入模式打开文件,可能会在进程中创建它。当然,istream界面将不允许进行任何输出操作,但是您可以在不关闭/重新打开文件的情况下将filebuf用于其他操作/流。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...