c++—文件编程

news/2024/12/2 22:31:05/

1. c++对文件的操作是由文件流类完成的,文件流类在流类与文件间建立连接;

2. 文件流类型

        ①文件输入流:ifstream

        ②文件输出流:ofstream

        ③文件输入/输出流:fstream

3. 语法

        ①定义文件流类的对象

ifstream ifile;   //定义了一个文件输入流对象;
ofstream ofile;   //定义了一个文件输出流对象;
fstream iofile;   //定义了一个文件输出/输入流对象;

        ②文件的打开方式

ifstream → ios::in
ofstream → ios::out|ios::trunc
fstream  → ios::in|ios::out|ios::app  

        ③文件打开示例

ifstream ifs("xxx.txt", ios::in);
if(!ifs)
{cout<<"open error ifs"<<endl;
}ofstream ofs("yyy.txt",ios::out|ios::app)
if(!ofs)
{cout<<"open error ofs"<<endl;
}fstream fs("zzz.txt",ios::in|ios::out|ios::trunc)
if(!fs)
{cout<<"open fs error"<<endl;
}

4. 文件中get()与getline()两个成员函数之间的区别

        ①get()遇到设置的终止符会停止,且不会从流中提取终止符,也不会越过终止符;

        ②getline()则会越过终止符(例如‘\n’),但是仍然不会把它放到缓冲区,比如在文件拷贝过程中设置了终止符是'\n',那么则需要在每次写入后在写入一个‘\n’;

5. 其他一些函数

        ①ignore():用于跳过流中的n个字符,或者遇到结束字符位置;

        ②int peek():窥视最近一次移动的指针,即向后看一下下一个字符是什么;实际并不改变文件读写位置;

        ③putback(char c):将字符c插入到当前的指针位置;

        ④close():成员函数,用来关闭文件;

 6. 随机读写函数,即随机移动文件指针,下文有示例

tellg()         //返回当前指针位置,输入流操作
seekg(绝对位置)  //输入数值,进行绝对移动
seekg(相对位置,参照位置)  //相对于参照位置进行移动
seekp(绝对位置)  //输入数值,进行绝对移动
seekp(相对位置,参照位置)  //相对于参照位置进行移动
tellp();        //返回当前指针位置,输出流操作//参照位置的三种方式:
ios::beg  //相对于文件头
ios::cur  //相对于当前位置
ios::end  //相对于文件尾
#include <iostream>
#include <fstream>
#include <cassert>using namespace std;int main(int argc, char **argv)
{fstream fs(argv[1], ios::in | ios::out | ios::trunc);assert(fs);char buf[100];fs<<"aabbccdd";fs.seekg(0,ios::beg);  //将文件指针定位在开头fs>>buf;cout<<"buf : "<<buf<<endl;return 0;
}

7. 文件拷贝程序,两个版本,分别是file.get()、file.getline();

file.get():

#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <string.h>using namespace std;int main(int argc, char ** argv)
{fstream from_file(argv[1],ios::in);if(!from_file){cout<<"open from_file failed"<<endl;exit(-1);}fstream to_file(argv[2],ios::out|ios::trunc);if(!to_file){cout<<"open to_file failed"<<endl;exit(-1);}char buf[1024];while(!from_file.eof()){memset(buf,0,sizeof(buf));from_file.get(buf,1024,'\n');to_file.write(buf,strlen(buf));while(from_file.peek() == '\n')  //因为get()不会跳过终止符{to_file << '\n';from_file.ignore();}}from_file.close();to_file.close();return 0;
}

file.getline():

#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <string.h>
#include <cassert>using namespace std;int main(int argc, char **argv)
{ifstream in_file(argv[1],ios::in);assert(in_file);ofstream out_file(argv[2],ios::out|ios::trunc);assert(out_file);char buf[1024];while(!(in_file.eof()))  //file.eof代表文件尾{memset(buf,0,sizeof(buf));in_file.getline(buf,sizeof(buf),'\n');  //getline会跳过终止符out_file.write(buf,strlen(buf));out_file<<'\n';  //每次补充一个\n进去;}in_file.close();out_file.close();return 0;
}

http://www.ppmy.cn/news/100340.html

相关文章

张小飞的Java之路——第四十一章——File

写在前面&#xff1a; 视频是什么东西&#xff0c;有看文档精彩吗&#xff1f; 视频是什么东西&#xff0c;有看文档速度快吗&#xff1f; 视频是什么东西&#xff0c;有看文档效率高吗&#xff1f; 介绍 诸小亮&#xff1a;从今天开始&#xff0c;我们学习 IO 流 张小飞…

三门问题的实验验证:贝叶斯概率公式实战

引言 数理统计与概率论经常出现在我们的日常生活中&#xff0c;如果能灵活掌握&#xff0c;可以起到很大的帮助。下面通过几个经典问题的探讨&#xff0c;浅入深出&#xff0c;更加深刻的理解贝叶斯全概率公式和贝叶斯公式的作用。 我的最深的体会就是&#xff0c;当某些已发生…

c++—封装:构造函数、析构函数、成员操作

1. 封装的主要目的是解决代码的维护性问题&#xff0c;经过封装的函数代码独立性高&#xff1b; 2. 封装的演变历史&#xff0c;以栈为例子介绍&#xff1a; ①成员&#xff08;top、data[ ]&#xff09;都在main函数里&#xff0c;动作方法&#xff08;push、pop&#xff09;…

应急响应-windows

win系统常见的安全事件 1.病毒&#xff0c;木马&#xff0c;蠕虫事件 2.web服务器入侵事件或第三方服务入侵事件 3.系统入侵事件&#xff0c;用win漏洞入侵系统&#xff0c;利用弱口令等。 4.网络攻击事件&#xff0c;如DDos&#xff0c;ARP欺骗等。 win系统安全事件发现的…

【经验总结】浮点数double/float精度误差问题总结

现象 最近做的项目中经常会在C环境下和高精度的double浮点类型数据打交道 这些double类型数据精度级别可能到 pico级别(10^-12) 甚至 femto级别(10^-15),用来表示集成电路的一些微观属性 但是非常诡异的是&#xff0c;不知道为什么在对这些高精度的浮点数进行运算时&#xff…

Threejs进阶之十六:音频可视化

最近事情比较多&#xff0c;博客更新的有点慢了&#xff0c;今天更新一期&#xff0c;主要聊一聊通过Threejs提供的音频API实现音频的可视化效果&#xff0c;先看下最终实现的效果 音频可视化 目录 Threejs中音频相关的类Audio 类构造函数常用属性常用方法创建Audio对象示例 Au…

RPC原理与实现

rpc叫做远程过程调用&#xff0c;是指一台机器上的服务通过通信协议调用网络中另一台机器上的程序&#xff0c;并拿到结果。 1、基本流程 基本流程为&#xff1a; 客户端程序通过Client Stub调度rpc函数Client Stub将调用方法、参数按照通信协议序列化成网络二进制数据&#…

IT公司的吉祥“树” 二叉树-(堆)C语言创建

目录 &#x1f36a;前言 一、树概念及结构 ✅基本概念 ✅树的专有名词 ✅ 树的表示 &#x1f6a9;孩子兄弟表示法 二、二叉树概念及结构 ✅概念 &#x1f60d;&#x1f60d;现实中的二叉树&#xff08;又称IT公司的吉祥物&#xff09;&#x1f60d;&#x1f60d; ✅…