C++文件操作全攻略:读写文本与二进制

C++文件操作全攻略:读写文本与二进制 写在前面⭐如果本篇博文对你有帮助那就关注 点赞 收藏一下吧目录1.文本文件5.1写文件5.2读文件2.二进制文件2.1写文件2.2读文件1.文本文件程序运行时产生的数据都属于临时数据程序一旦运行结束都会被释放通过文件可以将数据持久化C中对文件操作需要包含头文件fstream文件类型分为两种1.文本文件文件以文本的ASCII码形式存储在计算机中2.二进制文件文件以文本的二进制形式存储在计算机中用户一般不能直接读懂它们操作文件的三大类1. ofstream写操作2.ifstream读操作3. fstream读写操作1.1写文件写文件步骤如下1. 包含头文件#include fstream2. 创建流对象ofstream ofs;3. 打开文件ofs.open(文件路径,打开方式):4. 写数据ofs“写入的数据”5. 关闭文件ofs.close();文件打开方式示例#include iostream using namespace std; #include fstream //头文件包含 //文本文件 写文件 void test01() { //1.包含头文件 fstream //2.创建流对象 ofstream ofs; //3.打开文件 ofs.open(test.txt, ios::out); //若不指定存储路径则会自动存储在当前运行文件所属同级目录下 //4.写文件 写内容 ofs 姓名张三 endl; ofs 性别男 endl; ofs 年龄18 endl; //5.关闭文件 ofs.close(); } int main() { test01(); return 0; }总结●文件操作必须包含头文件fstream●读文件可以利用ofstream或者fstream类●打开文件时候需要指定操作文件的路径以及打开方式●利用可以向文件中写数据●操作完毕要关闭文件1.2读文件读文件与写文件步骤相似但是读取方式相对于比较多读文件步骤如下1. 包含头文件#include fstream2. 创建流对象ifstream ifs;3.打开文件并判断文件是否打开成功ifs.open(文件路径”,打开方式)4. 读数据四种方式读取5. 关闭文件ifs.close(示例#include iostream #include fstream using namespace std; //文本文件 读文件 void test01() { //1.包含头文件 //2.创建流对象 ifstream ifs; //3.打开文件 并且判断是否打开成功 ifs.open(test.txt, ios::in); if (!ifs.is_open()) { cout 文件打开失败 endl; return; } //4.读文件 //第一种——按空格/换行分割读取无法读取带空格的整行内容 // char buf[1024] {0}; // 定义字符数组初始化全0作为数据缓冲区 // while (ifs buf) // 流提取符自动跳过空白符读取到缓冲区读取失败时返回false结束循环 // { // cout buf endl; // } //第二种——按行读取支持读取带空格的整行需指定缓冲区大小 // getline成员函数读取一行内容到buf最多读取1023个字符留1个存结束符 // char buf[1024] {0}; // while (ifs.getline(buf, 1024)) //1024或者写成sizeof(buf) // { // cout buf endl; // } //第三种——按行读取推荐无需关注缓冲区大小支持带空格整行 // string buf; // while (getline(ifs, buf)) // 全局getline函数从输入流ifs读取一行到string对象buf // { // cout buf endl; // } // //第四种不推荐——逐个字符读取效率最低适合精细字符处理会读取所有空白符/换行符 char c; //// ifs.get()读取流中单个字符读取到文件末尾时返回EOF文件结束标志 while ((c ifs.get()) ! EOF) // EOF end of file { cout c; } //5.关闭文件 ifs.close(); } int main() { test01(); return 0; }总结●读文件可以利用ifstream或者fstream类●利用is_open函数可以判断文件是否打开成功●close关闭文件2.二进制文件以二进制的方式对文件进行读写操作打开方式要指定为ios::binary2.1写文件示例#include iostream using namespace std; #include fstream //二进制文件 写文件 class Person { public: char m_Name[64]; //姓名 int m_Age; //年龄 }; void test01() { //1.包含头文件 //2.创建流对象 ofstream ofs(person.txt, ios::out | ios::binary);//将2-3合并成一步 //3.打开文件 //ofs.open(person.txt, ios::out | ios::binary); //4.写文件 Person p {张三, 18}; ofs.write((const char*)p, sizeof(p)); //5.关闭文件 ofs.close(); } int main() { test01(); return 0; }总结●文件输出流对象可以通过write函数以二进制方式写数据2.2读文件示例#include iostream using namespace std; #include fstream //二进制文件 读文件 class Person { public: char m_Name[64]; int m_Age; }; void test01() { //1.包含头文件 //2.创建流对象 ifstream ifs; //3.打开文件 判断文件是否打开成功 ifs.open(person.txt, ios::in | ios::binary); if (!ifs.is_open()) { cout 文件打开失败 endl; return; } //4.读文件 Person p; ifs.read((char*)p, sizeof(p)); cout 姓名 p.m_Name ,年龄 p.m_Age endl; //5.关闭文件 ifs.close(); } int main() { test01(); return 0; }●文件输入流对象可以通过read函数以二进制方式读数据写到后面⭐如果本篇博文对你有帮助那就关注 点赞 收藏一下吧