首页 > 编程语言 >C++ 文件I/O流

C++ 文件I/O流

时间:2024-09-27 11:52:42浏览次数:3  
标签:文件 const void ios C++ 打开 读写

C++文件的I/O流
一、c++对文本文件的读写
a.创建流对象,通过流对象打开文件
ofstream ofs(const char* filename,openmode mode);
b.通过成员函数方式,打开文件
void open(const char* filename);
void open(const char* filename,openmode mode);
filename :文件的路径
mode :打开方式
    ios::app 添加输出
    ios::ate 当已打开时寻找到EOF
    ios::binary 以二进制模式打开文件
    iOS::in 为读取打开文件
    ios::out 为写入打开文件
    ios::trunc 覆盖存在的文件
    
ifstream类,默认以只读方式O_RDONLY打开文件,文件不存在则失败"r"
ifstream类,默认以只写方式O_RDONLY|O_CREAT|O_TRUNC打开文件,文件不存在则创建、存在则清空"w"
fstream类,默认以读写方式O_RDWR打开文件,文件不存在则失败,文件存在不清空"r+"
    
 注意:ios::里面打开模式单独使用和混合使用时候有些功能会有所删减变化,不是简单的功能相加,具体底层调用哪个打开模式可以通过strace ./a.out 来追踪底层对系统函数的调用
二、如何判断文件是否打开成功
a、通过!流对象名 执行了该类的!运算符重载版本
    if(!ifs) //为真,则文件打开失败
b、通过good\fail成员函数判断是否打开成功
    bool good();
    功能:判断上一次流是否成功,成功返回真,一般用于判断文件是否打开成功
三、读写文件

流对象 << 写操作

流对象 >> 读操作

对类对象操作符<< >>进行重载

class Student
{
	string name;
	int age;
	char sex;
	float score;
public:
    Student(const string& name,int age,char sex,float score):name(name),age(age),sex(sex),score(score){}	
	const string& getName(void) const
	{
		return name;
	}
	const int getAge(void) const
	{
		return age;
	}	
	const char getSex(void) const
	{
		return sex;
	}
	const float getScore(void) const
	{
		return score;
	}
	friend ostream& operator<<(ostream& os,const Student& stu)
	{
		return os<<stu.getName()<<" "<<stu.getAge()<<" "<<stu.getSex()<<" "<<stu.getScore()<<endl;
	}
	friend istream& operator>>(istream& is,Student& stu)
	{
		return is>>stu.name>>stu.age>>stu.sex>>stu.score;	
	}
}
四、关闭文件
成员函数:
    void close(void)
    注意:只是关闭流对象当前的文件,但是流对象没有销毁,还可以继续通过open成员函数重新打开别的文件

如何以文本方式读写类对象?

读写类对象时绝大部分成员变量都是私有的,因此无法直接在类外进行读写
由于ostream/istream分别是ofstream/ifstream的父类,因此如果重载了>> <<运算符,既可以用于平时输出、输入类催下,并且还可以直接用于类对象的文本方式流操作读写
    cout<<类对象
    cin>>类对象    重载后
    ofs<<类对象
    cin>>类对象    成立
五、c++的随机读写

c++为文件IO提供了俩套设置位置指针的成员函数,为了兼容一些有俩个位置指针的操作系统,但是UNIX、Linux、Windows系统底层只有一个文件位置指针,所以使用哪一套都没有区别

istream& seekg(off_type offset,ios::seekdir origin);
功能:通过 偏移量+基础位置 设置位置指针的位置
    offset:偏移量
    origin:基础位置
        ios::beg    文件开头
        iOS::cur    当前位置
        ios::end    文件末尾
istream& seekg(pos_type position);
功能:通过绝对值的方式设置位置指针的位置
seekp类似

标签:文件,const,void,ios,C++,打开,读写
From: https://blog.csdn.net/xjl1849395627/article/details/142590220

相关文章

  • Spring上传文件乱码问题(问号版)
    Spring上传文件乱码问题(问号版)目录Spring上传文件乱码问题(问号版)一、问题描述:二、原因分析三、解决办法一、问题描述:spring项目上传文件,后端接收文件并获取文件名称,名称中文变成“?”,例如:??abc()??.xml,其中问号为中文字符//前端传递参数MultipartFilefile//后端获取filena......
  • 局域网的文件实现快速下载文件
     localsend是一款简单好用的局域网传输工具,实现了设备之间的快速文件传输,如需要外网访问并远程下载传输文件。可使用路由侠映射.第一步局域网与局域网之间的传输文件1,Windows下载安装LocalSend.编辑2,进入下载页面后选择第一个EXE,下载完双击打开进行安装。编辑3,双击开始安装编......
  • 【YashanDB知识库】如何dump数据文件,转换rowid, 查询对应内容
    本文来自YashanDB官网,具体内容可见https://www.yashandb.com/newsinfo/7459464.html?templateId=1718516问题现象客户环境有时候会遇到文件损坏的情况,需要dump文件,根据rowid查询数据情况。问题的风险及影响熟练掌握崖山数据文件dump操作,并识别rowid,在故障的情况下可以快速确认相应......
  • 【YashanDB知识库】如何dump数据文件,转换rowid, 查询对应内容
    本文来自YashanDB官网,具体内容可见https://www.yashandb.com/newsinfo/7459464.html?templateId=1718516问题现象客户环境有时候会遇到文件损坏的情况,需要dump文件,根据rowid查询数据情况。问题的风险及影响熟练掌握崖山数据文件dump操作,并识别rowid,在故障的情况下可以快速确认......
  • 【window批处理文件快速入门学习--这份文档就够了】
    一、简介1.1什么是批处理文件?批处理文件(BatchFile)是一种包含一系列DOS命令的文本文件,通常用于自动化重复性任务。文件的扩展名为.bat或.cmd,当在命令提示符下运行时,操作系统会按顺序执行文件中的命令。批处理文件的创建和使用为用户提供了高效的命令行操作方式。示......
  • C++_读取配置文件以及内存方式
    开发范式输入和输出程序员的另一部分时间是用在获取需求输入上基本上普通开发者都是业务逻辑翻译员,传统开发的最重要的事情就是要理解客户的需求,把需求翻译成计算机系统的流程和逻辑AI开发是基于大模型的开在AI时代从翻译业务逻辑的程序员转变为能调教大模......
  • Taro——H5项目如何修改静态文件入口
    前言这里我们来说下如何修改Taro静态文件的入口,一般情况下是不需要修改的,但是如果你是在当前项目下部署的二级站点,那你就需要调整了。内容这里我们说两种情况,一种是在静态资源引入的时候加入前缀,另一种是真正的将静态资源输出到指定的目录下。静态资源前缀这里的静态文件入口......
  • PbootCMS上传文件大小限制
    要解决PBootCMS上传大文件的问题,需要从多个方面进行配置。以下是一个详细的步骤指南,包括修改php.ini文件、重启PHP服务、修改编辑器上传大小设置以及针对不同Web服务器的额外配置。一、修改 php.ini 文件打开 php.ini 文件找到PHP安装目录下的 php.ini 文件。修改......
  • pbootcms通过会员自带上传实现留言表单图片文件上传功能
    在PBootCMS3.0会员版本中,你可以通过修改会员上传头像的功能来实现留言上传图片的功能。以下是详细的步骤和示例代码:步骤复制上传文件将member/comm/upload.html文件复制到上一层目录,命名为comm/upload.html。修改上传接口修改upload.html文件中的上传接口。将upload......
  • 【C#】Halcon显示图像(读文件路径、缓存、创建空白图像)
    publicHTuplehv_ExpDefaultWinHandle;//输入图像宽高Int64Input_Image_Width=0,Input_Image_Height=0;///<summary>///加载图像///</summary>///<paramname="type">类型,0:内存地址;1:文件路径;2:图像;3:空白图像</param>///......