100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > C++ fstream 文件流

C++ fstream 文件流

时间:2023-11-28 17:15:13

相关推荐

C++ fstream  文件流

C++ ,中,所有的I/O操作 都以 stream 类 为 基类,包括我们要认识文件I/O,stream这个类有两个重要的运算符:

1、插入器(<<)

向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout<<"Write Stdout"<<' ';就表示把字符串"Write Stdout"和换行字符(' ')输出到标准输出流。

2、析取器(>>)

从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x;就表示从标准输入流中读取一个指定类型(即变量x的类型)的数据。

在C++中,对文件的操作是通过stream的子类fstream(file stream)来实现的,所以,要用这种方式操作文件,就必须加入头文件fstream.h。下面就把此类的文件操作过程一一道来。

打开文件:

imbue(locale("chs"));设置中文模式

void open(const char* filename,int mode,int access);

参数:

filename:要打开的文件名

mode:要打开文件的方式

access:打开文件的属性

打开方式在类ios中定义,常用值如下:

ios::app:以追加的方式打开文件

ios::ate: 文件打开后定位到文件尾,ios:app就包含有此属性

ios::binary: 以二进制方式打开文件,缺省的方式是文本方式。两种方式的区别见前文

ios::in: 文件以输入方式打开

ios::out:文件以输出方式打开

os::nocreate: 不建立文件,所以文件不存在时打开失败

ios::noreplace:不覆盖文件,所以打开文件时如果文件存在失败

ios::trunc:如果文件存在,把文件长度设为0。

二、关闭文件

打开的文件使用完成后一定要关闭,fstream提供了成员函数close()来完成此操作,如:file1.close();就把file1相连的文件关闭。

三、读写文件

读写文件分为文本文件和二进制文件的读取,对于文本文件的读取比较简单,用插入器和析取器就可以了;而对于二进制的读取就要复杂些,下要就详细的介绍这两种方式。

1、文本文件的读写

文本文件的读写很简单:用插入器(<<)向文件输出;用析取器(>>)从文件输入。假设file1是以输入方式打开,file2以输出打开。示例如下:

file2<<"I Love You";//向文件写入字符串"I Love You"

int i;

file1>>i;//从文件输入一个整数值。

这种方式还有一种简单的格式化能力,比如可以指定输出为16进制等等,具体的格式有以下一些。

方案一:

#include<fstream.h>void main(){ifstream fin("d:\\简介.txt",ios::nocreate);if(!fin){cout<<"File open error!\n";return;}char c;while((c=fin.get())!=EOF)cout<<c; //注意结束条件的判断fin.close();}

方案二:

读入文本文件:

//为能够正确读出写入文件的各数据,各数据间最好要有分隔#include<fstream.h>void main(){fstream f("d:\\try.txt",ios::out);f<<1234<<' '<<3.14<<'A'<<"How are you"; //写入数据f.close();f.open("d:\\try.txt",ios::in);int i;double d;char c;char s[20];f>>i>>d>>c;//读取数据f.getline(s,20);cout<<i<<endl; //显示各数据cout<<d<<endl;cout<<c<<endl;cout<<s<<endl;f.close();}

方案三:

#include<fstream.h>void main(){ifstream fin("d:\\简介.txt",ios::nocreate);if(!fin){cout<<"File open error!\n";return;}char c[80];while(!fin.eof()) //判断文件是否读结束{fin.read(c,80);cout.write(c,fin.gcount());}fin.close();}

拷贝文件

#include<fstream.h>void main(){ifstream fin("C:\\1.exe",ios::nocreate|ios::binary);if(!fin){cout<<"File open error!\n";return;}ofstream fout("C:\\2.exe",ios::binary);char c[1024];while(!fin.eof()){fin.read(c,1024);fout.write(c,fin.gcount());}fin.close();fout.close();cout<<"Copy over!\n";}

原文链接/Rasin_Wu/article/details/79048094

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。