文件读写——C++

c++ 利用yaml-cpp读写yaml配置文件 在程序员的开发生涯中,读写配置文件必不可少。 配置文件有利于我们灵活配置工程,解决大量重复劳动,也方便调试。 配置文件的格式有很多,最简单的有一行一行的文本,也有像 json、xml、protocol buffer 这样结构化的格式,当然也有 yaml 这种格式。 今天的博文介绍的是如何在 C++ 开发中利用 yaml-cpp 开源库读写 yaml 配置文件。 如果有 Python 开发经验的同学,可能知道用 Python 读取 yaml 是再简单不过了,但是 C++ 麻烦一点,它需要你自己下载源码然后编译 阅读详情

C++文件流:
fstream  // 文件流
ifstream  // 输入文件流
ofstream  // 输出文件流

//创建一个文本文件并写入信息
//同向屏幕上输出信息一样将信息输出至文件
#include<iomanip.h>
#include<fstream.h>
void main()
{
  ofstream f1("d://me.txt");           //打开文件用于写,若文件不存在就创建它
  if(!f1)return;                 //打开文件失败则结束运行
  f1<<setw(20)<<"姓名:"<<"廉东方"<<endl;     //使用插入运算符写文件内容
  f1<<setw(20)<<"家庭地址:"<<"河南郑州"<<endl;
  f1.close();                   //关闭文件
}
运行后打开文件d:/me.txt,其内容如下:
       姓名:廉东方
     家庭地址:河南郑州

文件操作:
打开文件
  文件名
    注意路径名中的斜杠要双写,如:
    "D://MyFiles//ReadMe.txt"
  文件打开方式选项:
    ios::in    = 0x01, //供读,文件不存在则创建(ifstream默认的打开方式)
    ios::out    = 0x02, //供写,文件不存在则创建,若文件已存在则清空原内容(ofstream默认的打开方式)
    ios::ate    = 0x04, //文件打开时,指针在文件最后。可改变指针的位置,常和in、out联合使用
    ios::app    = 0x08, //供写,文件不存在则创建,若文件已存在则在原文件内容后写入新的内容,指针位置总在最后
    ios::trunc   = 0x10, //在读写前先将文件长度截断为0(默认)
    ios::nocreate = 0x20, //文件不存在时产生错误,常和in或app联合使用
    ios::noreplace = 0x40, //文件存在时产生错误,常和out联合使用
    ios::binary  = 0x80  //二进制格式文件
  文件保护方式选择项:
    filebuf::openprot;   //默认的兼容共享方式
    filebuf::sh_none;    //独占,不共享
    filebuf::sh_read;    //读共享
    filebuf::sh_write;   //写共享
  打开文件的方法
    调用构造函数时指定文件名和打开模式
    ifstream f("d://12.txt",ios::nocreate);         //默认以 ios::in 的方式打开文件,文件不存在时操作失败
    ofstream f("d://12.txt");                //默认以 ios::out的方式打开文件
    fstream f("d://12.dat",ios::in|ios::out|ios::binary); //以读写方式打开二进制文件
    使用Open成员函数
    fstream f;
    f.open("d://12.txt",ios::out);             //利用同一对象对多个文件进行操作时要用到open函数
检查是否成功打开
  成功:
    if(f){...}       //对ifstream、ofstream对象可用,fstream对象不可用。
    if(f.good()){...}
  失败:
    if(!f){...}       // !运算符已经重载
    if(f.fail()){...}
读写操作
  使用<<,>>运算符
  只能进行文本文件的读写操作,用于二进制文件可能会产生错误。
  使用函数成员 get、put、read、write等
  经常和read配合使用的函数是gcount(),用来获得实际读取的字节数。
读写二进制文件注意事项
  打开方式中必须指定ios::binary,否则读写会出错
  用read/write进行读写操作,而不能使用插入、提取运算符进行操作,否则会出错。
  使用eof()函数检测文件是否读结束,使用gcount()获得实际读取的字节数
关闭文件
  使用成员函数close,如:
  f.close(); 
  利用析构函数
  对象生命期结束时会检查文件是否关闭,对没有关闭的文件进行关闭操作。
随机读写文件
  通过移动文件读写指针,可在文件指定位置进行读写。
  seekg(绝对位置);      //绝对移动,    //输入流操作
  seekg(相对位置,参照位置);  //相对操作
  tellg();          //返回当前指针位置
  seekp(绝对位置);      //绝对移动,    //输出流操作
  seekp(相对位置,参照位置);  //相对操作   
  tellp();          //返回当前指针位置
  参照位置:
  ios::beg  = 0       //相对于文件头
  ios::cur  = 1       //相对于当前位置
  ios::end  = 2       //相对于文件尾
读写文本文件的示例
//为能够正确读出写入文件的各数据,各数据间最好要有分隔
#include<fstream.h>
void main()
{
  fstream f("d://try.txt",ios::out);
  f<<1234<<' '<<3.14<<'A'<<"How are you"; //写入数据
  f.close();
  f.open("d://try.txt",ios::in);
  int i;
  double d;
  char c;
  char s[20];
  f>>i>>d>>c;               //读取数据
  f.getline(s,20);
  cout<<i<<endl;             //显示各数据
  cout<<d<<endl;
  cout<<c<<endl;
  cout<<s<<endl;
  f.close();
}
运行结果:
1234
3.14
A
How are you
Press any key to continue
显示文本文件的内容
//使用get()一次读一个字符--------------------------------方案一
#include<fstream.h>
void main()
{
  ifstream fin("d://简介.txt",ios::nocreate);
  if(!fin){
    cout<<"File open error!/n";
    return;
  }
  char c;
  while((c=fin.get())!=EOF)cout<<c;    //注意结束条件的判断
  fin.close();
}
//使用get(char *,int n,char delim='/n')一次读多个字符----方案二
//巧妙利用文本文件中不会有字符'/0'的特点进行读取
#include<fstream.h>
void main()
{
  ifstream fin("d://简介.txt",ios::nocreate);
  if(!fin){
    cout<<"File open error!/n";
    return;
  }
  char c[80];
  while(fin.get(c,80,'/0')!=NULL)cout<<c; //注意结束条件的判断
  fin.close();
}
//使用read(char *,int n)读文件---------------------------方案三
#include<fstream.h>
void main()
{
  ifstream fin("d://简介.txt",ios::nocreate);
  if(!fin){
    cout<<"File open error!/n";
    return;
  }
  char c[80];
  while(!fin.eof())            //判断文件是否读结束
  {
    fin.read(c,80);
    cout.write(c,fin.gcount());
  }
  fin.close();
}
拷贝文件
//二进制文件操作示例
#include<fstream.h>
void main()
{
  ifstream fin("C://1.exe",ios::nocreate|ios::binary);
  if(!fin){
    cout<<"File open error!/n";
    return;
  }
  ofstream fout("C://2.exe",ios::binary);
  char c[1024];
  while(!fin.eof())
  {
    fin.read(c,1024);
    fout.write(c,fin.gcount());
  }
  fin.close();
  fout.close();
  cout<<"Copy over!/n";
}


本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/zhaozy55555/archive/2008/11/14/3300168.aspx

C++ 文件和文件流 cpp - 操作文件流,读写文件 以上代码通过 fstream 类打开了一个名为 example.txt 的文件,并先读取了文件中的内容,然后将写入位置定位到文件末尾处,并写入了一段字符串。这两个类都继承自 fstream 类,fstream 类则是 istream 和 ostream 类的基类,因此它们都提供了一些通用的接口来支持文件读写操作。以上代码通过 ifstream 类打开了一个名为 example.txt 的文件,并逐行输出了文件中的内容。想要通过 C++ 来读写文件,首先需要打开一个文件并建立相应的文件流。 阅读详情

相关推荐

Windows下yaml-cpp库的安装与使用【附C++读写.yaml配置文件教程代码】

yaml-cpp库 是一个功能强大的 C++ 库,用于处理 YAML 数据格式。其源码结构清晰,模块划分合理,易于理解和扩展。库内提供了丰富的 API,包括节点的创建、查询、修改以及文件的读写等,使得开发者能够方便地在 C++ 中操作 YAML 数据。源码中使用了现代 C++ 特性,如模板元编程和智能指针,保证了代码的安全性和效率。此外,yaml-cpp 还具有良好的异常处理和错误报告机制,使得开发者能够轻松应对各种异常情况。

weixin_43896283的博客 1771

c++文件读写

Ÿ   读写操作的头文件是fstream,setw操作符的头文件是iomanip Ÿ   打开文件的方法 ü  调用构造函数时指定文件名和打开模式,注意路径名中的斜杠要双写 ifstream f("d:\\12.txt",ios::nocreate);//默认以 ios::in 的方式打开文件,文件不存在时操作失败 ofstream f("d:\\12.txt"); //默认以 ios:

qubes的专栏 1733

Linux内存优化:KSM技术原理与实践指南

内存共享是提升虚拟化环境资源利用率的关键技术,其核心原理是通过识别相同内容的内存页进行合并。Linux内核的KSM(Kernel Samepage Merging)机制采用红黑树数据结构管理内存页,通过多级哈希比较算法实现高效合并。该技术能显著降低物理内存消耗,提升CPU缓存命中率,特别适用于运行大量相似虚拟机实例的场景。在容器化和云计算环境中,KSM与NUMA优化、内存气球等技术协同,可实现40%-60%的内存节省。典型应用包括金融云平台的高密度虚拟机部署,以及Kubernetes集群的基础镜像优化。

weixin_28730353的博客 369

C++ fstream文件流读写文件实例

  例如:以二进制输入方式打开文件c:config.sys   fstream file1;   file1.open("c:\config.sys",ios::binary|ios::in,0);   如果open函数只有文件名一个参数,则是以读/写普通文件打开,即:   file1.open("c:\config.sys");&lt;=&gt;file1.open("c:\config....

2384

法律AI工具横评:Kimi Work与WorkBuddy,谁更适合法律人?

在人工智能技术日益普及的今天,自然语言处理(NLP)和大语言模型(LLM)正深刻改变着专业领域的工作范式。其核心原理在于通过海量数据训练,使模型能够理解、生成和推理人类语言。这一技术价值在于将从业者从繁琐、重复的信息处理工作中解放出来,极大提升工作效率与知识获取的便捷性。在法律、金融、咨询等对文本处理要求极高的行业,AI助手已展现出在文档分析、信息检索和内容生成方面的巨大潜力。具体到法律应用场景,AI工具能够辅助完成合同审查、法律检索和文书起草等核心任务,成为专业人士的得力助手。本文聚焦于近期备受关注的两款

weixin_30279671的博客 560

嵌入式设备低功耗设计误区:为什么你的RK3568总是被‘意外’唤醒?

本文深入分析RK3568嵌入式设备低功耗设计中的常见误区,重点探讨唤醒源管理不当导致的意外唤醒问题。通过解析硬件设计陷阱、软件配置错误及系统化审计方法,帮助开发者有效排查和解决GPIO配置、唤醒源设置等关键因素引起的功耗异常,提升设备续航能力。

php55的博客 460

C++读写文件

C++文件流的头文件为,对应的类有3个: std::fstream // 文件流,由iostream派生而来,用于读写文件 std::ifstream // 输入文件流,由istream派生而来, 用于读文件 std::ofstream // 输出文件流,由ostream派生而来,用于写文件 1.文件操作1)打开文件 文件名 注意路径名中的斜杠要双写,如: “D:\MyFi

suyang001的专栏 1075

WordPress搭建“外贸独立站”完整操作教程

  以往的文章,我们介绍了很多种搭建独立站的方式,有最省事的Shopify 、最专业的Magento以及最省钱的Wordpress Woocommerce。其中,通过主机托管的方式又分了免费的谷歌云vps主机、1美元Godaddy主机以及SiteGround共享主机三种。建站方法方式实在太多了,有免费的,有廉价的,有商业版的,有共享主机、有云主机主机以及各种各样的vps服务器,选择哪种方式,哪款主机,也只有真正试了才直到。   没错,上述的这些方法方式,无一例外,我都亲身折腾过。从个人实际需求和建站方式来

www25qi的博客 8080

C++中的文件流

C++文件流: fstream  // 文件流 ifstream  // 输入文件流 ofstream  // 输出文件流 //创建一个文本文件并写入信息 //同向屏幕上输出信息一样将信息输出至文件 #include #include void main() {   ofstream f1("d:\\me.txt");           //打开文件用于写,若文件不存在就

u012422446的博客 479

QMT Python API 实战指南:从安装到策略开发的完整流程

本文提供了一份详尽的QMT Python API实战指南,涵盖从环境配置到策略开发的完整流程。文章深入解析了xtdata行情模块与xttrader交易模块的核心架构与协作方式,并通过一个双均线策略实例,手把手教你如何获取数据、计算信号并执行交易,是量化交易开发者快速上手QMT Python接口文档的实用教程。

butter的博客 1416

2、Elixir与Erlang:构建高可用系统的利器

本文介绍了Elixir与Erlang在构建高可用系统方面的优势,深入探讨了Erlang的并发机制、容错能力以及分布式特性,并结合实际应用场景展示了其在服务器端开发中的强大能力。此外,还提供了学习资源和交流平台,帮助开发者快速上手并深入实践。

grape的博客 125

文件操作

打开和关闭文件 要执行文件的输入输出,须做以下几件事: (1) 在程序中包含头文件fstream; (2) 建立文件流。建立文件流的过程就是定义流类的对象,例如: ifstream in; ofstream out; fstream both; 分别定义了输入流对象in;输出流对象out,输入输出流对象both。 (3) 使用open()函数打开文件,也就是使某一文件与上面的某一流相联系。...

sdjcwangwei的博客 542

微信小程序 - 最新详细实现用户保存下载视频到手机相册,将视频临时路径、在线播放地址(网络路径)URL存储到手机,弹出访问手机相册权限询问,支持视频格式mp4、avi、mov、wmv、flv、webm

微信小程序,视频,手机相册,保存,另存为,小程序保存到相册权限,writePhotosAlbum,一键保存视频到手机相册功能(视频来源为链接),第一次要获取用户授权,授权使用相册权限,小程序视频下载,如何把视频下载到相册,下载一个视频到本地相册,显示下载进度,可取消下载,视频下载到本地,微信小程序视频如何下载,保存视频到相机,页面播放视频并下载到本地,安卓系统,苹果ios保存到相册报错,权限拒绝后打不开,添加相册授权弹框拒绝后再也出不来了,实现保存视频到手机相册功能,将mp4在线视频下载并存储到用户的手机中

🏆 前端领域优质创作者 7626

c++ 开发中利用yaml-cpp读写yaml配置文件

在程序员的开发生涯中,读写配置文件必不可少。 配置文件有利于我们灵活配置工程,解决大量重复劳动,也方便调试。 配置文件的格式有很多,最简单的有一行一行的文本,也有像 json、xml、protocol buffer 这样结构化的格式,当然也有 yaml 这种格式。 今天的博文介绍的是如何在 C++ 开发中利用 yaml-cpp 开源库读写 yaml 配置文件。 如果有 Python 开发经验的同学...

frank 的专栏 6万+

第一篇:APS智能排产理论核心与求解器选型指南

本文系统解析了APS(高级计划与排程)系统的核心功能与技术实现。APS作为融合生产计划与排程的智能决策系统,通过运筹优化算法实现全局最优,平衡交付与效率。重点探讨了混合整数线性规划(MILP)在APS中的应用,包括设备分配、生产批量和人员班次优化等场景,并分析了其局限性与其他算法(如启发式算法)的互补性。文章还提供了APS实施策略建议和优化建模技巧,强调从简单模型开始迭代验证的重要性。最后介绍了甘特图在APS中的多维可视化作用,包括计划调整和决策支持功能。全文为理解APS系统原理及实践应用提供了全面指导。

算法工程师 544

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

yaml-cpp:c++ 开发中利用yaml-cpp读写yaml配置文件

在程序员的开发生涯中,读写配置文件必不可少。 配置文件有利于我们灵活配置工程,解决大量重复劳动,也方便调试。 配置文件的格式有很多,最简单的有一行一行的文本,也有像 json、xml、protocol buffer 这样结构化的格式,当然也有 yaml 这种格式。 今天的博文介绍的是如何在 C++ 开发中利用 yaml-cpp 开源库读写 yaml 配置文件。 如果有 Python...

Escaping 1630

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【C++】利用yaml-cpp读写yaml配置文件

YAML是专门用来写配置文件的语言,非常简洁和强大,比JSON和xml格式要方便很多。YAML语言(发音 /ˈjæməl/ )的设计目标,就是方便人类读写,它实质上是一种通用的数据串行化格式。它的基本语法规则kv之间有空格 k: v- 大小写敏感- 使用缩进表示层级关系- 缩进时不允许使用Tab键,只允许使用空格。- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可- #表示注释,从这个字符一直到行尾,都会被解析器忽略。- 字符串默认不使用引号表示。

lemonxiaoxiao的博客 4155

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

利用 yaml-cpp 开源库读写 yaml 配置文件—— yaml-cpp安装配置

yaml-cpp 是一个开源库,地址在 github 上,https://github.com/jbeder/yaml-cppyaml-cpp 是通过 CMake 来进行构建和编译的。利用 yaml-cpp 开源库读写 yaml 配置文件—— yaml-cpp安装配置

曾经也曾立志 1万+

c++中的文件读写函数

头文件,命名空间 #include <fstream> using name space std; //函数 //构造函数,构造函数传入文件名称会尝试打开文件。 explicit basic_ifstream( const char* filename, std::ios_base::openmode mode = ios_base::...

my393661的博客 4508

C++文件的读写操作详解

在程序设计中,文件常用的操作不外乎——打开、读、写、流指针操作、关闭。在回答问题时,却发现很多道友没有真正掌握这些简单的操作。为此,博主就文件的一系列操作进行详细介绍,供道友们学习。 一、文件的相关概念 (一)文件及文件类型 计算机上的文件其实是数据的集合,对文件的读写其实是对数据的读写。 文件可以大致分为两种:文本文件和二进制文件。   1、文本文件:它的每一个字节存放的是一个ASCII码,代表...

袁君元的博客 3万+

C++在linux上读写文件

文章目录一、简介1.1 文件类型1.2 C++中操作文件的三大类二、linux中写文件2.1 步骤2.2 文件打开方式2.3 linux中写文件DEMO三、linux中读文件3.1 步骤3.2 读取文件的方式3.3 linux中写文件demo 一、简介 程序运行时产生的数据都属于临时数据,程序一旦运行结束都会释放,可以通过读写操作将数据持久化 c++中对文件的操作必须要引入头文件< fstream > 1.1 文件类型 对于读写操作来说,文件类型分为两种: 文本文件 ——以文本的ASCII码形

m0_50157558的博客 1万+

C++中文件的读写

C++中文件的读写

码城的博客 7539

Cpp文件读写

cpp文件读写 fstream提供了三个类,用来实现c++对文件的操作。(文件的创建,读写)。 ifstream – 从已有的文件读 ofstream – 向文件写内容 fstream - 打开文件供读写 支持的文件类型 实际上,文件类型可以分为两种: 文本文件和二进制文件. 文本文件保存的是可读的字符, 而二进制文件保存的只是二进制数据。利用二进制模式,你可以操作图像等文件。用文本模式,你只能读写文本文件。否则会报错。 例一: 写文件 声明一个ofstream变量 调用

CharilePuth的博客 1396

C++文件读写

带你一起读取文件!

快乐星空Maker的博客 1482
上一篇: 使用HttpContext的User属性来实现用户身份验证
下一篇: 文件读写——C语言
yangfcf
博客等级 码龄19年 10粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值