c++文件输入与输出

2023-11-09

基于流的文件IO

头文件
ofstream : 写文件
ifstream : 读文件
fstream : 读写文件

using namespace std;
//打开文件
std::ifstream fin("xxx.txt");
//std::ifstream fin;
//fin.open("xxx.txt");
std::ofstream fout("xxxx.txt");
if (!fin.is_open())  //判断文件是否打开成功
{
    cout << "打开文件异常" << endl;
    fin.clear();
}
//从文件读取一个字符
char ch;
fin >> ch;              //read a character from the file

char buf[80];
fin >> buf;             //read a word from the file
fin.getline(buf, 80);   //read a line from the file

string line;
getline(fin, line);     //read from a file to a string object
fout<< line;				

fout.close();
fin.close();            
fin.clear();            //reset fin
  • 文件模式
    将流与文件关联时(无论所雇佣文件名初始化文件流对象,还是使用open()方法),都可以指定文件模式第二个参数:
    ifstream fin(“xxxxx.txt”,openMode1);
    ofstream fout();
    fout.open(“xxxxx.txt”,openMode2);
常量 含义
ios_base::in 打开文件,以便读取
ios_base::out 打开文件,以便写入
ios_base::ate 打开文件,并移到文件尾
ios_base::app 追加到文件尾
ios_base::trunc 如果文件存在,截断文件(清空旧文件)
ios_base::binary 二进制文件

ifstream open()方法和构造函数用ios_base::in(打开文件以读取)作为模式参数的默认值,而ofstream open()方法和构造函数用 ios_base::out|ios_base::trunc(打开文件,以写入并截断文件)作为默认参数。位运算符or(|)用于将两个位值合并成为一个可用于设置两个位的值。

  • c++mode与cmode对应关系
c++模式 c模式 含义
ios_base::in “r” 打开以读取
ios_base::out|ios_base::trunc “w” 打开以写入,如果已存在,则覆盖
ios_base::out|ios_base::app “a” 打开以写入,只追加
ios_base::out|ios_base::out “r+” 打开以读写,在文件允许的位置写入
ios_base::out|ios_base::out|ios_base::trunc “w+” 打开以读写,如果已存在,首先覆盖
c++mode|ios_base::binary “cmode”+“b” 以c++mode(或相应cmode)和二进制模式打开;例如:ios_base::in|ios_base::binary成为"rb"
c++mode|ios_base::ate “cmode” 以指定模式打开,并移到文件尾。C是使用一个独立的函数调用,而不是模式编码。例如:ios_base::in|ios_base::ate 被转换为"r"模式打开,然后调用fseek(file,0,SEEK_END)

注意:ios_base::ate和ios_base::app都将文件指针指向打开的文件末尾。二者的区别在于,ios_base::app模式只允许将数据添加到文件末尾,而ios_base::ate模式是将指针放到文件尾。

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

c++文件输入与输出 的相关文章

随机推荐

  • ARP协议的漏洞、作用、危害以及防御

    首先 ARP协议工作在网络层 ARP是Address Resolution Protocol的缩写 中文名 地址 解析 协议 作用 已知对方的IP地址 获取对方的MAC地址 原理 过程 1 发送ARP广播请求 2 回应ARP单播应答 arp
  • 【Qt-15】Qt与C++数据类型之间的转换

    1 String与QString之间的转换 string2QString string out weight QString qstr qstr QString fromStdString out weight QString2String
  • 搞一个release版本的aar包

    最近在做一个aar包给第三方使用 由于是第一次做这个aar包 在所有的功能代码完成需要打包的时候发现 坑开始出现了 于是各种百度 开始吧 首先你需要创建一个Android项目 然后创建一个android的library 下一步 剩下的就看你
  • JavaWeb.MVC购物车(第一部分)

    前言 这一篇我会使用servlet EL JSTL 三层架构写一个简单的购物车项目 内容比较多 这只是第一部分 只有登陆 首页数据显示和商品添加到购物车的功能 还有一部分功能的代码我会写在下一篇博客里 感兴趣的朋友们可以看一看 也希望大家可
  • Blender2.9基础七:外部插件篇

    一 插件安装 1 安装插件 2 插件显示位置 二 材质贴图相关插件 1 GrabDoc 贴图烘培插件 GrabDoc可以运行一键式场景设置 然后开始建模 对形状进行建模后 甚至在建模阶段 你可以实时预览材质在视口中的外观 主要特点 实时材质
  • unity3D 脚本中按键或鼠标输入响应函数

    简单地总结一下 unity中脚本实现输入 键盘和鼠标 的响应事件函数 不够完善 以后碰到再慢慢添加 键盘输入 1 Input GetKey up 按住键盘上键 2 Input GetKey KeyCode UpArrow 按住键盘上键 Ke
  • JS实现将数组中某个属性值相同的元素,放在一起

    function sortArr arrList str var arr 大数组 t 临时属性值相同数组 临时的变量 tmp if arrList length gt 0 tmp arrList 0 str 将相同类别的对象添加到同一个数组
  • [从零开始学习FPGA编程-44]:视野篇 - 集成电路助力数字化时代高质量发展-1-集成电路芯片主要形态

    目录 前言背景 什么是集成电路 什么是数字化时代
  • 为什么小程序预览时必须打开‘调试工具vconsole’才能正常运行?

    这是因为没有为小程序配置域名导致的 预览或者使用小程序体验版的时候 小程序会自动校验你是否配置了合法的域名 如果没有配置 还是使用的ip地址 这样就会造成一个现象 在开发工具上以及真机调试时 都能正常运行 但预览就不行 但只要在预览时 打开
  • c++如何使用yaml来进行配置

    c 如何使用yaml来进行配置 yaml的基本语法可以参考这个博客 https www cnblogs com sddai p 9626392 html yaml的使用也可以参考这个博客 https www it610 com articl
  • 基础算法题——迷宫(递推)

    迷宫 题目链接 解题思路 暴力法 利用 dfs 遍历每一条可能的路径 将遍历的权值和不断取余 不足 当 n m 取较大的情况下 所遍历的路径可能会暴增 出现超时的情况 递推法 从题目上我们可以发现 最终的权值和是要对 mod 取余的 利用这
  • 查询SQLSERVER执行过的SQL记录(历史查询记录)

    有的时候 需要知道近段时间SQLSERVER执行了什么语句 可以用下面的方法 SELECT TOP 1000 QS creation time SUBSTRING ST text QS statement start offset 2 1
  • Linux教程系列 pdf下载(鸟哥私房菜等)

    鸟哥的Linux私房菜 基础篇 第四版 pdf 下载 LINUX内核设计与实现 pdf 下载 Linux 操作系统 基础操作 教学 doc 下载 linux内核深入剖析基于0 11 pdf 下载 Linux系统命令及其使用详解 doc 下载
  • 静态变量与动态变量的区别

    目录 一 定义 1 变量与常量 2 局部变量 局部变量 定义在函数中的变量 3 全局变量 4 动态变量和静态变量 二 区别 1 局部变量与全局变量的对比 2 静态变量与动态变量 一 定义 1 变量与常量 变量 指的是在程序运行过程中 可以通
  • Linux 高级进程管理

    1 让出处理器 Linux提供一个系统调用运行进程主动让出执行权 sched yield 进程运行的好好的 为什么需要这个函数呢 有一种情况是用户空间线程的锁定 如果一个线程试图取得另一个线程所持有的锁 则新的线程应该让出处理器知道该锁变为
  • 动态sql MyBatis处理多对一,一对多映射关系

    MyBatis处理模糊查询 1 用 符代替 接参 避免 占位符被解析成 在字符串中无法接参 select from user where username like name 2 使用sql语句中字符串拼接的函数 select from u
  • 微信小程序背景图片设置问题

    我们都知道 用css给网页设置背景图片 可以导入网络图片和本地图片 1 网络图片 元素定位 background image url https timgsa baidu com timg image quality 80 size b99
  • CUDA error: CUBLAS_STATUS_EXECUTION_FAILED when calling ‘cublasSgemm’

    运行transformer模型是报错如题 1 减小batch size 原因是调用cublas函数时会生成句柄 占用一定的内存 确保剩余内存够使用 2 gpu驱动版本和cuda torch版本的匹配问题 低版本的gpu驱动 尝试换成11 0
  • 怎么上传本地项目或文件到SVN服务器

    实验需要将本地的文件上传到SVN的doc文件夹下 在桌面右击 TortoiseSVN gt Repo brower gt 输入你的仓库的url gt 输入用户姓名和密码 即可访问到svn 右键点击Add File即可添加要上传的文件 如下图
  • c++文件输入与输出

    基于流的文件IO 头文件 ofstream 写文件 ifstream 读文件 fstream 读写文件 using namespace std 打开文件 std ifstream fin xxx txt std ifstream fin f