文件流到 读取和写入
来源:互联网 发布:方舟生存进化优化好么 编辑:程序博客网 时间:2024/05/17 00:05
C++把文件看作字符序列,即字符流。文件可分为文本文件和二进制文件。
fstream.h头文件包括三个流类:输入文件流类ifstream、输出文件流类ofstream和输入/输出文件流类fstream。函数中包含的头文件,最好要把引号引用的头文件写在前面。
文件的打开与关闭
1.使用open( )函数打开文件
open( )函数是上述三个流类的成员函数,其原型定义在fstream.h中。打开文件应先定义一个流类的对象,然后使用open( )函数打开文件。
open( )函数原型为:
void open(const unsigned char*,int mode, int access=filebuf::openprot);
open()函数第一个参数用来传递文件名,第二个参数决定文件将如何被打开,这些参数是定义在抽象类中,常用的有:
ios::app // 使输出追加到文件尾部
ios::ate // 查找文件尾
ios::in // 打开一个文件进行读操作
ios::out // 打开一个文件进行写操作
ios::nocreate // 打开一个已有文件,如该文件不存在,则打开失败
ios::noreplace // 若文件存在,导致打开失败
ios::ate // 文件打开时,文件指针位于文件尾
ios::trunc // 如果文件存在,则清除该文件的内容,文件长度压缩为0
ios::binary // 以二进制方式打开文件
第三个参数access的值决定文件的类别。分下列5种情况:
0 普通文件
1 只读文件
2 隐含文件
4 系统文件
8 备份文件
对于类ifstream,mode的缺省值为ios::in,access的缺省值为0;而对于类ofstream,mode的缺省值为ios::out,access的缺省值为0。
例如,用读方式打开一个文本文件file.txt方法如下:
fstream A; // 创建对象
A.open("file.txt",ios::in);
以输出文本方式打开一个文件的方法如下:
ofstream outfile; // 创建对象
outfile.open("file.txt",ios::out); // 打开输出文件
以输出二进制数据方式打开一个文件的方法如下:
ofstream outfile; // 创建对象
outfile.open("file.txt",ios::out|ios::binary);
打开普通的输出文件file.txt的方法如下:
ofstream out;
out.open("file.txt",ios::out,0);
或,
ofstream out.open("file.txt");
实现将数据从数据文件提取到内存区的操作,要使用ifstream类的函数成员open( ),将输入文件流与一个特定的存储区域联系起来。
以提取文本数据的方式打开一个文件的方法如下:
ifstream in1; // 创建对象
in1.open("file1.txt",ios::in); // 打开文件
以提取二进制数据的方式打开一个文件的方法如下:
ifstream in2; // 创建对象
in2.open("file2.txt",ios::in| ios::binary); // 打开文件
2.使用close( )函数关闭文
函数成员close( )的作用是关闭一个磁盘文件与输入/输出文件流的联系。使用完一个文件后,应该把它关闭。close( )函数是流类中的成员函数,它不带参数,不返回值。
调用close( )函数的格式如下:
流对象名. close( );
例如:
out. close( ); // 关闭与流out相联接的文件
close( )函数一次只能关闭一个文件,文件使用完后应及时关闭。
文件的读写
文件的读写分文本文件与二进制文件两种情况,在含有文件操作的程序中,必须包含头文件fstream.h。
对于打开的文件,可以使用输入/输出流的成员函数进行读写操作,这些函数有get( )、put( )、read( )、和write( )函数等。对于文本文件,也可以使用运算符“<<”与“>>”进行读写操作。
out. close( ); // 关闭与流out相联接的文件
close( )函数一次只能关闭一个文件,文件使用完后应及时关闭。
文件的读写
文件的读写分文本文件与二进制文件两种情况,在含有文件操作的程序中,必须包含头文件fstream.h。
对于打开的文件,可以使用输入/输出流的成员函数进行读写操作,这些函数有get( )、put( )、read( )、和write( )函数等。对于文本文件,也可以使用运算符“<<”与“>>”进行读写操作。
read( )函数在istream类中定义,其函数原型如下:
istream&read(unsigned char *buf,int n);
其中第一个参数是一个指针,它指向要读入数据的起始地址;第二个参数是一个整数值,它是要读入的数据的字节(字符)数。
write( )函数在ostream类中定义,其函数原型如下:
ostream& write (const unsigned char *buf,int n);
此函数可以从buf所指的缓冲区把n个字符(字节)写到输出流中。
此外,在文件结束处有一个标志位,记为EOF(End OF);采用文件流方式读取文件时,使用成员函数eof( ),可以检测到这个结束符,文件结束时其返回值为真。
为了实现C++文件的随机读写操作,输入/输出流类库提供了定位文件读写指针的成员函数。
istream类定位读指针的成员函数如下:
istream& istream::seekg(流中位置) ;
表示移动指针到参数所指的绝对位置(相对于文件开始位置的字节数)。
istream& istream::seekg(偏移量,参照位置) ;
表示移动指针到偏移于第二个参数所指位置的一定位置上,偏移量由第一个参数值给出,第二个参数是ios类中的一个枚举量:
enum seek_dir
{
beg; // 相对于文件的开始位置
cur, // 相对于文件指针的当前位置
end // 相对于文件尾
};
istream& istream::tellg( ) ;// 返回指针的绝对位置
ostream类对于写指针提供的成员函数如下:
ostream&ostream::seekp(流中位置) ;
表示移动指针到参数所指的绝对位置。
ostream& ostream::seekp(偏移量,参照位置) ;
表示移动指针到偏移于第二个参数所指位置的一定位置上,偏移量由第一个参数值给出。
ostream& ostream::tellp( ) ; // 返回指针的绝对位置
用于读的文件指针必须处于文件头与文件尾之间,用于写的文件指针则可指向文件尾之后。
write( )函数在ostream类中定义,其函数原型如下:
ostream& write (const unsigned char *buf,int n);
此函数可以从buf所指的缓冲区把n个字符(字节)写到输出流中。
此外,在文件结束处有一个标志位,记为EOF(End OF);采用文件流方式读取文件时,使用成员函数eof( ),可以检测到这个结束符,文件结束时其返回值为真。
为了实现C++文件的随机读写操作,输入/输出流类库提供了定位文件读写指针的成员函数。
istream类定位读指针的成员函数如下:
istream& istream::seekg(流中位置) ;
表示移动指针到参数所指的绝对位置(相对于文件开始位置的字节数)。
istream& istream::seekg(偏移量,参照位置) ;
表示移动指针到偏移于第二个参数所指位置的一定位置上,偏移量由第一个参数值给出,第二个参数是ios类中的一个枚举量:
enum seek_dir
{
beg; // 相对于文件的开始位置
cur, // 相对于文件指针的当前位置
end // 相对于文件尾
};
istream& istream::tellg( ) ;// 返回指针的绝对位置
ostream类对于写指针提供的成员函数如下:
ostream&ostream::seekp(流中位置) ;
表示移动指针到参数所指的绝对位置。
ostream& ostream::seekp(偏移量,参照位置) ;
表示移动指针到偏移于第二个参数所指位置的一定位置上,偏移量由第一个参数值给出。
ostream& ostream::tellp( ) ; // 返回指针的绝对位置
用于读的文件指针必须处于文件头与文件尾之间,用于写的文件指针则可指向文件尾之后。
正在加载中...
- 文件流到 读取和写入
- 文件读取和写入
- 文件读取和写入
- 文件读取和写入
- Java读取文件内容和写入内容到文件
- 将读取到的文件流写入到磁盘上
- IO流对文件读取和写入
- 文件流的读取和写入
- 读取文件和写入文件
- 使用Java读取xlxs文件和写入txt文件,并将数据写入到本地文件
- java IO流处理实战;完成文件读取和写入,使用到BufferedReader 、PrintStream等
- 文件的读取和写入
- 读取和写入plist文件
- 写入和读取顺序文件
- 读取和写入plist文件
- ******************* 文件的写入和读取 *******************
- 【OpenMesh】文件读取和写入
- 文件的读取和写入
- 嵌入式软件开发-----Qt setPen()画笔函数的初步了解
- 学习感悟(一)
- linux C++ 资料集合
- UPDATE
- Cocoa 框架概述
- 文件流到 读取和写入
- 碰到“error LNK2019: 无法解析的外部符号”收藏
- spring的官方网站
- xml文件类,封装了IXMLDocument(C++Builder)
- C语言运算符优先级汇总
- HDU 2192 MagicBuilding
- 【转】PPP数据帧的格式
- 行列转换问题案例回答
- tiny6410 中 QT程序 在开发板运行字体变得很小
显示评论签名
取消批量删除批量删除
上一页1下一页
到页