I/O: std::ios_base::openmode

std::ios_base::openmode

std::ios_base::in:  打开文件进行读操作,即读取文件中的数据

如果指定路径中没有包含该文件,不会创建,而且设置std::ios_base::badbit.

std::ios_base::out: 打开文件进行写操作,即写入数据到文件。

如果指定路径中并没有包含该文件,会创建一个新的.

如果指定的路径中包含有该文件,那么打开后,会清空文件中内容,其实就是暗含了std::ios_base::truc.

std::ios_base::in | std::ios_base::out: 打开文件进行读写操作

如果指定的路径没有包含该文件,也不会创建,并且会设置std::ios_base::badbit.

std::ios_base::app: 每次进行写入操作的时候都会重新定位到文件的末尾.

如果指定路径不存在该文件那么创建一个.

std::ios_base::ate: 打开文件之后立即定位到文件末尾

如果指定的路径不存在该文件不会创建.

std::ios_base::trunc: 打开文件,若文件已存在那么,清空文件内容.

如果指定的路径不存在该文件不会创建.

如果指定的路径含有该文件那么清空文件中的内容.

std::ios_base::binary: 以二进制的方式对打开的文件进行读写.

如果指定的路径不存在该文件不会创建.

总结:

1,凡包含std::ios_base::out mode的操作方式,如果文件不存在都是会创建.

std::ios_base::out | std::ios_base::app/ate/trunc 这些组合的方式来操作文件,如果指定的路径该文件不存在就会创建一个空的.

2,如果std::ios_base::in 和 std::ios_base_out同时使用就会按照 std::ios_base_in,也就是即使文件不存在也不会创建.

3,std::ios_base::in | std::ios_base::out | std::ios_base::app/ate/trunc 这些组合的方式来操作文件, 如果指定路径的文件不存在也不会创建而且会把当前stream的state设置为std::ios_base::badbit.

4,由于std::ios_base::out和std::ios_base::trunc单独使用的时候在打开已存在文件的情况下都会清空文件内容,因此我们使用的时候要格外注意.例如:我们可以通过std::ios_base::out | std::ios_base::app组合的形式来消除打开已存在文件时候的清空动作.

I/O: std::ios_base::openmode的更多相关文章

  1. ubuntu下 GCC编译程序出现 undefined reference to `std::ios_base::Init::Init()'问题

    网上的解释是:“ you need to add -lstdc++, or use 'g++' rather than 'gcc' as your driver program.”,也就是说如果想要使 ...

  2. std::ios_base::fmtflags orig std::streamsize prec

  3. 利用gcc编译链接时出现 ‘undefined reference to `std::ios_base::Init::Init()’ 解决

    一般编译链接c++程序最好使用g++,若有如上的报错信息,需要在gcc后加上 -lstdc++ eg: gcc test.c -lstdc++ gcc和g++都是GNU的一个编译器. g++:后缀.c ...

  4. CentOS 6.2下log4cplus的使用

    一.简介 log4cplus是一款优秀的基于C/C++的开源日志库.log4cplus具有线程安全,不用但心在多线程状态下写日志问题:使用灵活,可通过配置文件设置日志级别下输出位置,还可以在程序运行时 ...

  5. std::ofstream由二进制流写文件的问题

    从MPQ包中读取二进制流出来然后文件写到硬盘. DWORD size = SFileGetSize(hFile); char* buffer = new char[size]; std::ofstre ...

  6. note: declarations in dependent base ‘std::basic_ios<char>’ are not found by unqualified lookup

    错误信息如题所示. 修改前: template< typename _CharT, typename _Traits = std::char_traits<_CharT> > ...

  7. 文件操作的openmode

    C中文件的openmode如下: r 只读 为输入打开一个文本文件 w 只写 为输出打开一个文本文件 a 追加 向文本文件尾添加数据 rb 只读 为输入打开一个二进制文件 wb 只写 为输出打开一个二 ...

  8. C++标准库中的std::endl究竟做了什么?

    先抓出std::endl的源代码: /** *  @file  ostream *  @brief  Write a newline and flush the stream. * *  This m ...

  9. error C2061: 语法错误: 标识符“openmode”

    今天在一台新机子上编译项目,出现了这个错误,不知如何解决,先记录一下. 1>------ 已启动全部重新生成: 项目: ZERO_CHECK, 配置: Debug x64 ------1> ...

随机推荐

  1. BZOJ1016:[JSOI2008]最小生成树计数(最小生成树,DFS)

    Description 现在给出了一个简单无向加权图.你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树.(如果两颗最小生成树中至少有一条边不同,则这两个最小生成树就是不同的 ...

  2. 日常踩坑——Dev C++ pow()函数的坑

    坑 Dev C++ pow()函数 那年冬天,显示屏前坐着如喽啰,那时候我含泪发誓,再也不用Dev. 蓝桥杯官网给提供的版本,没办法bug也得硬着头皮用. 16年蓝桥杯的第八题 四平方和定理: 在De ...

  3. 9、RabbitMQ-集成Spring

    spring封装RabbitMQ看官网:https://spring.io/projects/spring-amqp#learn 开发时根据官网的介绍进行开发,具体的说明都有具体的声明 1.导入依赖 ...

  4. WOSign API

    [HttpGet] public ActionResult WoSign() { // System.IO.FileStream fs = System.IO.File.OpenRead(System ...

  5. Appium基础篇(一)——启动emulator

    1. Appium API文档:链接参考 http://appium.io/slate/cn/v/?ruby#appium-介绍. 2. Appium 安装篇:http://www.cnblogs.c ...

  6. Android 代码集装箱

    1. 一个APP下载升级的Demo(通知栏实时更新下载进度)------(一) 2.一个APP下载升级的Demo(通知栏实时更新下载进度)------(二) 3.APK包名修改

  7. java程序陷阱

    1.找奇数

  8. 【HTML-进阶-如何实现父级块级元素宽度自适应子元素宽度】

    背景 块级元素宽度默认值为100%,而不是auto;因此其宽度不会根据子元素内容动态适应. 如何实现父级元素宽度动态适应其子元素. 方法一 display:inline; 给块级元素设置inline- ...

  9. iOS12适配及问题记录,Debug正常使用,Release数据为nil的报错

    Debug模式数据一切正常,打包出去的ipa,Release模式下数据为nil的错误,经排查,buiding中的Optimization Level, Release设为None,解决问题. IOS1 ...

  10. Selenium报错整理

    1. driver不匹配(常见于打不开浏览器,或者浏览器能打开但是获取不了网页元素,或者无法sendKey等问题) Exception in thread "main" org.o ...