20240422,C++文件操作

2024-04-22 23:44
文章标签 c++ 操作 20240422

本文主要是介绍20240422,C++文件操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

停电一天之后,今天还有什么理由不学习呜呜……还是没怎么学习

一,文件操作

文件操作可以将数据持久化,对文件操作时须包含头文件<fstream>
两种文件类型:文本文件:文件以文本的ASCII码形式存储;二进制文件:文件以文本的二进制形式存储
操作文件三大类:ofstream 写操作;ifsream读操作, fstream读写操作

1.1 文本文件
1.1.1  写文件

包含头文件:#include <fstream>——创建流对象:ofs.open("文件路径”,打开方式);——写数据:ofs<<"写入的数据">>;——关闭文件:ofs.close();
打开方式 :
ios::in   为读文件而打开文件
ios::out   为写文件而打开文件
ios::ate   初始位置:文件尾
ios::app   追加方式写文件
ios::trunc   如果文件存在先删除,再创建
ios::binary   二进制方式

注意:|  操作符,配合使用文件打开方式,IOS::BINARY | IOS::OUT——用二进制方式写文件;未指定完整文件夹路径,默认和源文件一起?

#include <iostream>
#include <fstream>
using namespace std;void test01() {//创建流对象ofstream ofs;//指定打开方式    “文件路径”,打开方式ofs.open("test.txt", ios::out);//写内容ofs << "姓名 :张三" << endl;ofs << "性别:男" << endl;ofs << "年龄:18" << endl;//关文件ofs.close();
}
int main() {test01();system("pause");return 0;
}
1.1.2  读文件

包含头文件:#include <fstream>——创建流对象:ifstream ifs——打开并判断文件是否打开成功 ifs .open ("文件路径",打开方式)——读数据【四种方式读取】——关闭文件 ifs.close();

字符数组while (ifs >> buff)        字符数组while (ifs.getline(buff2, sizeof(buff2)))
字符串【这里不可以省略<string>】while (getline (ifs,buff3))     单个字符while ((c = ifs.get()) != EOF)

#include <iostream>
#include<string>
#include <fstream>
using namespace std;void test01() {ifstream ifs;ifs.open("test.txt", ios::in);if (!ifs.is_open()) {     //is_open(),bool类型,!取反cout << "文件打开失败" << endl;return;   //失败不继续进行}//读数据   第一种   输出上比其他多了一个换行符,不懂char buff[1024] = { 0 };//字符数组while (ifs >> buff) {    //文件写入BUFF,没有数据的时候循环结束cout << buff << endl;}//第二种//char buff2[1024] = { 0 };//while (ifs.getline(buff2, sizeof(buff2))) {//GETLINE获取一行,char*,首地址,count最多读几个字节数【数组大小】//	cout << buff2 << endl;//}//都不注释也只输出一次,不懂//第三种//string buff3;基础的输入流,GETLINE基础的输入流,需要输入流对象IFS,准备好的字符串//while (getline (ifs,buff3)) {   //未定义标识符getline?不懂//	cout << buff3 << endl;//}//失败——加上<string>头文件//第四种,C,不常用,效率低/*char c;while ((c = ifs.get()) != EOF) {cout << c;}*/ifs.close();
}
int main() {test01();system("pause");return 0;
}
1.2 二进制文件

打开要指定为ios::binary   

1.2.1 写文件

二进制写文件主要利用流对象调用成员函数WRITE,函数原型:ostream& write ( const char* buffer,int len);解释:字符指针buffer指向内存中的一段存储空间,len是读写的字节数
二进制读入的文件会乱码,只要正确读入就不影响

#include <iostream>
#include<string>
#include <fstream>
using namespace std;
class Person {
public:char m_Name[64];//尽量用C的字符数组,STRING容易出现问题int m_Age;
};void test01() {ofstream ofs;//打开头文件ofs.open("person.txt", ios::out | ios::binary);Person p = { "王五",78 };//对P取地址返回Person性质的地址,强制转换成CHAR*ofs.write((const char*)&p, sizeof(Person));ofs.close();
}
int main() {test01();system("pause");return 0;
}
1.2.2 读文件

二进制读文件主要利用流对象调用成员函数READ,函数原型:istream& read ( const char* buffer,int len);解释:字符指针buffer指向内存中的一段存储空间,len是读写的字节数

#include <iostream>
#include<string>
#include <fstream>
using namespace std;
class Person {
public:char m_Name[64];//尽量用C的字符数组,STRING容易出现问题int m_Age;
};void test01() {ifstream ofs;//打开头文件ofs.open("person.txt", ios::in | ios::binary);if (!ofs.is_open()) {cout << "打开失败" << endl;return;}//读文件Person p;ofs.read((char*)&p, sizeof(Person));//输出数据cout << "姓名:" << p.m_Name << "\t年龄:" <<p.m_Age<< endl;ofs.close();
}
int main() {test01();system("pause");return 0;
}

这篇关于20240422,C++文件操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/927197

相关文章

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

c++中std::placeholders的使用方法

《c++中std::placeholders的使用方法》std::placeholders是C++标准库中的一个工具,用于在函数对象绑定时创建占位符,本文就来详细的介绍一下,具有一定的参考价值,感兴... 目录1. 基本概念2. 使用场景3. 示例示例 1:部分参数绑定示例 2:参数重排序4. 注意事项5.

使用C++将处理后的信号保存为PNG和TIFF格式

《使用C++将处理后的信号保存为PNG和TIFF格式》在信号处理领域,我们常常需要将处理结果以图像的形式保存下来,方便后续分析和展示,C++提供了多种库来处理图像数据,本文将介绍如何使用stb_ima... 目录1. PNG格式保存使用stb_imagephp_write库1.1 安装和包含库1.2 代码解