一、选择合适的文件读写模式
在C++中,要想对文件进行读写操作,需要首先了解不同的文件读写模式。常用的文件读写模式有文本模式和二进制模式。
文本模式下,文件以文本形式存储,每个字符都由其对应的ASCII码值表示。读取文本文件时,C++会将文件中的文本按照规定的格式读入到程序中。而在写入文本文件时,C++会将程序中的文本按照一定格式写入文件中。
二进制模式下,文件以二进制形式存储,每个字符由其对应的二进制数值表示。读写二进制文件时,无论是读取还是写入,都是以二进制形式进行处理的。
以下是两种模式读写文件的示例代码:
//文本模式读取文件 #include#include using namespace std; int main(){ ifstream file("text.txt"); //打开文本文件 string s; //定义字符串变量 while(getline(file,s)) //逐行读取文件 { cout< <using namespace std; int main(){ ofstream file("text.txt"); //打开文本文件 string s="Hello, world!"; //初始化字符串变量 file< using namespace std; int main(){ int a=123,b=456; ofstream file("binfile",ios::binary); //打开二进制文件,指定为二进制模式 file.write(reinterpret_cast(&a), sizeof(a)); //写入int型变量a file.write(reinterpret_cast (&b), sizeof(b)); //写入int型变量b file.close(); //关闭文件 ifstream file2("binfile",ios::binary); //以二进制模式打开二进制文件 int c,d; file2.read(reinterpret_cast (&c), sizeof(c)); //读取int型变量c file2.read(reinterpret_cast (&d), sizeof(d)); //读取int型变量d cout< <<" "< < 二、读取文本文件的方法
在进行文本文件读取的时候,有两种方法,一种是一次性读取整个文件,另一种是逐行读取。
一次性读取整个文件通常应用于文件较小,内存足够的情况下,使用比较方便。代码如下:
#include#include #include using namespace std; int main(){ ifstream file("test.txt"); //打开文本文件 if(!file){ //判断文件是否打开成功 cout<<"file not found"< 逐行读取文件通常可以应用于读取大文件或者需要逐行处理文件内容的情况下,代码如下:
#include#include #include using namespace std; int main(){ ifstream file("test.txt"); //打开文本文件 if(!file){ //判断文件是否打开成功 cout<<"file not found"< 三、写入文本文件的方法
文本文件的写入主要是通过ofstream类来实现,使用方法非常简单,直接通过<<符号向文件中写入数据即可,可以写入字符串、数字等各种数据类型。写入文件后通过close函数关闭文件,才能保证文件内容写完整。
#includeusing namespace std; int main(){ ofstream file("test.txt"); //打开文本文件 if(!file){ //判断文件是否打开成功 cout<<"file not found"< 四、读写二进制文件的方法
读写二进制文件和读写文本文件的方法类似,只需要把打开文件的模式设置为二进制模式即可。对于二进制文件,我们不能直接读取字符串或数字,需要通过内存指针地址来读取或写入数据。以下是一个读写二进制文件的示例代码:
#includeusing namespace std; struct student{ //学生信息结构体 int id; char name[20]; double score; }; int main(){ student stu1={1,"Tom", 80.5}, stu2; //定义两个学生信息 fstream file("data", ios::binary|ios::in|ios::out); //以二进制模式打开二进制文件 if(!file){ //判断文件是否打开成功 cout<<"file not found"< (&stu1), sizeof(stu1)); //将stu1写入二进制文件 file.seekg(0, ios::beg); //将文件指针移动到文件开头 file.read(reinterpret_cast (&stu2), sizeof(stu2)); //读取stu2 cout< <<" "< <<" "< < 五、总结
以上就是C++文件读写操作的一些基本方法和技巧,对于初学者来说可以先从文本文件读写开始,逐渐掌握二进制文件读写应用。同时在进行文件读写操作的过程中,要注意正确的文件打开和关闭顺序,避免不必要的错误。