C++入门到理解之文件操作(文本文件的读写+二进制文件的读写)

原文地址http://www.javayihao.top/detail/168

一:概述

1.程序在运行中产生的数据都是临时数据,程序一旦运行结束会被释放,可以通过文件相关的操作将数据持久保存。

2.文件类型有文本文件(文件以文本的ASCLL码形式存储在计算机中)和二进制文件(文件以文本的二进制形式存储在计算机中,用户一般直接读不懂他们)。

3.C++中对文件操作需要包含头文件,涉及到的三大文件操作类:ofstream写操作类;ifstream读操作类;fstream读写操作类。

二:文本文件读写操作

写文件

第1步:包含头文件#include

第2步:创建流对象ofstream ofs

第3步:打开文件ofs.open("文件路径",打开方式)

第4步:写文件ofs<<"写入数据"

第5步:关闭文件ofs.close()

注意:

1.文件的打开方式

C++入门到理解之文件操作(文本文件的读写+二进制文件的读写)_第1张图片

2.打开方式可以通过|操作符配合使用,如打开二进制写文件 ios::binary|ios:out

3.创建流对象ofstream也可以选择fstream读写类

案例代码

#include 
using namespace std; //第1步 #include  int main() { //第2步 ofstream ofs; //第3步 当前同级目录生成test文件 ofs.open("test.txt",ios::app); //第4步 ofs << "helloword"; //第5步 ofs.close(); }

读文件

第1步:包含头文件#include

第2步:创建流对象ifstream ifs

第3步:打开文件ifs.open("文件路径",打开方式)判断是否打开成功,打开方式和上面写文件一样

第4步:读数据

第5步:关闭文件ifs.close()

案例代码

#include 
using namespace std; //第1步 #include  void test() { //第2步 ifstream ifs; //第3步 ifs.open("test.txt", ios::in); if (!ifs.is_open()) { cout << "文件打开失败"; return; } //第4步 char buf[1024] = { 0 };//字符数组初始化为0 while (ifs >> buf) {//循环全部读完 cout << buf << endl; } //第5步 ifs.close(); } int main() { test(); }

注意:第4步读数据方式有四种。其他三种如下

//第二种
char buf[1024] = { 0 };
while (ifs.getline(buf,sizeof(buf))){//一行一行读取 cout << buf << endl; }
//第三种
#include 
#include  using namespace std; //第1步 #include  void test() { //第2步 ifstream ifs; //第3步 ifs.open("test.txt", ios::in); if (!ifs.is_open()) { cout << "文件打开失败"; return; } //第4步 string buf; while (getline(ifs,buf)){//使用string中的全局函数getline一行行读取,需要导入string头文件 cout << buf << endl; } //第5步 ifs.close(); } int main() { test(); }
//第四种
#include 
using namespace std; //第1步 #include  void test() { //第2步 ifstream ifs; //第3步 ifs.open("test.txt", ios::in); if (!ifs.is_open()) { cout << "文件打开失败"; return; } //第4步 char c; while ((c=ifs.get())!=EOF){//一个一个字符读取、效率不高 cout << c; } //第5步 ifs.close(); } int main() { test(); }

三:二进制文件读写操作

1.二进制方式对文件操作,打开方式指定为ios::binary,二进制文件不仅可以对内置数据类型的数据操作,还可以对对象类型操作。

2.写入的二进制文件出现乱码不用处理,只要读到的正确即可

写文件

#include 
using namespace std; //第1步 头文件 #include  class person { public: char name[54];//涉及到字符串读写,不要使用c++的string,而是用c的char int age; }; void test() { //第2步 流对象 ofstream ofs; //第3步 打开文件 ofs.open("test.txt", ios::out|ios::binary); //第4步写文件 person p = { "李四",12 }; ofs.write((const char *)&p,sizeof(p)); //第5步关闭 ofs.close(); } int main() { test(); }

读文件

#include 
using namespace std; //第1步 #include  class person { public: char name[54]; int age; }; void test() { //第2步 ifstream ifs; //第3步 ifs.open("test.txt", ios::in|ios::binary); if (!ifs.is_open()) { cout << "文件读取失败"; return; } //第4步 person p ; ifs.read((char *)&p,sizeof(p)); cout << p.name << p.age; //第5步 ifs.close(); } int main() { test(); }

C++入门到理解之文件操作(文本文件的读写+二进制文件的读写)_第2张图片

你可能感兴趣的:(C++入门到理解之文件操作(文本文件的读写+二进制文件的读写))