ios_base::out和ios::out、ios_base::in和ios::in、ios_base::app和ios::app等之间有什么区别吗?

2023年8月2日,周三晚上

今天我看到了这样的两行代码:

cpp 复制代码
std::ofstream file("example.txt", std::ios_base::out);

std::ofstream file("example.txt", std::ios::out);

这让我产生了几个疑问:

为什么有时候用ios_base::out,有时候用ios::out?

ios_base::out和ios::out之间有区别吗?

我花了一两个小时才搞清楚....


目录

  • 结论
  • [ios_base类的 I/O 流控制标志有哪些](#ios_base类的 I/O 流控制标志有哪些)
  • [ios类的 I/O 流控制标志有哪些](#ios类的 I/O 流控制标志有哪些)
  • 证明它们是一样的

结论

ios_base::out和ios::out之间没有区别,它们是一模一样的。

因为它们都是整形常量,而且数值一样,完全可以互相代替。

至于什么时候用哪个,我认为喜欢用哪个就用哪个,因为它们确实是一样的。

ios_base类的 I/O 流控制标志有哪些

  • std::ios_base::in:输入模式,表示以读取方式打开流。
  • std::ios_base::out:输出模式。
  • std::ios_base::app:追加模式,表示以写入方式打开流,并将数据追加到文件末尾而不清除原有内容。
  • std::ios_base::trunc:截断模式,表示以写入方式打开流,并清除文件原有内容。
  • std::ios_base::binary:二进制模式,以二进制方式打开流。
  • std::ios_base::ate:打开流后将文件指针定位到文件末尾。

ios类的 I/O 流控制标志有哪些

  • std::ios::in:输入模式,表示以读取方式打开流。
  • std::ios::out:输出模式。
  • std::ios::app:追加模式,表示以写入方式打开流,并将数据追加到文件末尾而不清除原有内容。
  • std::ios::trunc:截断模式,表示以写入方式打开流,并清除文件原有内容。
  • std::ios::binary:二进制模式,以二进制方式打开流。
  • std::ios::ate:打开流后将文件指针定位到文件末尾。

证明它们是一样的

cpp 复制代码
#include<iostream>
#include<fstream>


int main(){
	printf("ios_base::in的值:%d\n",std::ios_base::in);
	printf("ios::in的值:%d\n",std::ios::in);
	printf("-------------\n");
	
	printf("ios_base::out的值:%d\n",std::ios_base::out);
	printf("ios::out的值:%d\n",std::ios::out);
	printf("-------------\n");
	
	printf("ios_base::app的值:%d\n",std::ios_base::app);
	printf("ios::app的值:%d\n",std::ios::app);
	printf("-------------\n");
	
	printf("ios_base::trunc的值:%d\n",std::ios_base::trunc);
	printf("ios::trunc的值:%d\n",std::ios::trunc);
	printf("-------------\n");
	
	printf("ios_base::binary的值:%d\n",std::ios_base::binary);
	printf("ios::binary的值:%d\n",std::ios::binary);
	printf("-------------\n");
	
	printf("ios_base::ate的值:%d\n",std::ios_base::ate);
	printf("ios::ate的值:%d\n",std::ios::ate);
	printf("-------------\n");
	
	
}
相关推荐
浅念-1 分钟前
C语言——自定义类型:结构体、联合体、枚举
c语言·开发语言·数据结构·c++·笔记·学习·html
仰泳的熊猫10 分钟前
题目1433:蓝桥杯2013年第四届真题-危险系数
数据结构·c++·算法·蓝桥杯·深度优先·图论
Trouvaille ~19 分钟前
【Linux】线程同步与互斥(四):线程池与任务管理
linux·运维·服务器·c++·操作系统·线程池·日志系统
wbs_scy21 分钟前
C++:智能指针完全指南(原理、用法与避坑实战,从 RAII 到循环引用)
开发语言·c++·算法
u01092727124 分钟前
C++中的对象池模式
开发语言·c++·算法
hansang_IR1 小时前
【记录】AT_abc400模拟赛
c++·算法·模拟赛
阿昭L1 小时前
C++异常处理机制反汇编(二):32位下基本类型异常分析
c++·逆向工程
知识分享小能手1 小时前
Oracle 19c入门学习教程,从入门到精通,VC++ + Oracle 实现汽配管理系统(21)
c++·学习·oracle
近津薪荼1 小时前
优选算法——滑动窗口2(数组模拟哈希表)
c++·学习·算法
挖矿大亨1 小时前
C++中const修饰成员函数
开发语言·c++