文件读写函数汇总
来源:互联网 发布:二进制数组转字符串 编辑:程序博客网 时间:2024/06/02 18:03
都是自己在msdn上面扒拉下来或者自己总结的,如果有哪些地方有问题请指正哦~
1.Read函数:从文件中读特定字符数,并将其放到数组中
强调:可以重复读入,比如使用过该函数之后,若再次调用该函数,不会再从头读入,而是从刚刚截断的地方开始。例如下面的例子,可以循环把文件读完
语法:
istream &read( char *buffer, streamsize num );
(1)Buffer是char型指针或数组,否则要进行强制类型转换。如当buffer
是unsigned char*时,要用(char*)&buffer。
(2)streamsize num指读入的字节数,为int型
函数read()用于输入流,在将字符放入buffer之前从流中读取num个字节。如果碰到EOF,read()中止,丢弃不论多少个字节已经放入。例如:
struct { int height; int width; } rectangle; input_file.read( (char *)(&rectangle), sizeof(rectangle) ); if( input_file.bad() ) { cerr << "Error reading data" << endl; exit( 0 ); }
实例:
2.Get函数
强调:可以重复读入,比如使用过该函数之后,若再次调用该函数,不会再从头读入,而是从刚刚截断的地方开始。
语法:
int get(); istream &get( char &ch ); istream &get( char *buffer, streamsize num ); istream &get( char *buffer, streamsize num, char delim ); istream &get( streambuf &buffer ); istream &get( streambuf &buffer, char delim );
get()函数被用于输入流,和以下这些:
读入一个字符并返回它的值,
读入一个字符并把它存储在ch,
读取字符到buffer直到num - 1个字符被读入,或者碰到EOF或换行标志,
读取字符到buffer直到已读入num - 1个字符,或者碰到EOF或delim(delim直到下一次不会被读取),
读取字符到buffer中,直到碰到换行或EOF,
或是读取字符到buffer中,直到碰到换行,EOF或delim。(相反,delim直到下一个get()会被读取 ).
例如,下面的代码一个字符一个字符的显示文件temp.txt中的内容:
char ch; ifstream fin( "temp.txt" ); while( fin.get(ch) ) cout << ch; fin.close();
3.getline函数
强调:可以重复读入,比如使用过该函数之后,若再次调用该函数,不会再从头读入,而是从刚刚截断的地方开始。
delim直到下一个getline()不会被读取
语法:
istream &getline( char *buffer, streamsize num ); istream &getline( char *buffer, streamsize num, char delim );
4.seekg函数:将光标移到制定的位置
ostream &seekp( off_type offset, ios::seekdir origin ); ostream &seekp( pos_type position );
函数seekg()用于输入流,并且它将重新设置"get"指针到当前流的从origin偏移offset个字节的位置上,或是置"get"指针在position位置。
5.tellg:返回字符的个数
语法:
pos_type tellg();
tellg()函数用于输入流,并返回流中"get"指针的当前位置。
注:seekg和tellg配合使用用以获得文件大小
例:int GetFileSize(){ //获得文件大小
file_compress_in.seekg(0, ios::end); //将光标移到文件尾,偏移量为0
int FileSize = file_compress_in.tellg(); //获得从文件头到光标处的字符量
file_compress_in.seekg(0, ios::beg); //将光标移到文件头,偏移量为0
return FileSize;
}
6.open函数
重点:文件的打开方式
语法: void open( const char *filename );
void open( const char *filename, openmode mode );
函数open()用于文件流。它打开filename并将其与当前的流相关联。可以选择的模式有:
模式 含义
ios::app 添加输出 (所有输出添加到文件末尾,指针位置总在最后)(不能单独使用,否则无法打开)
ios::ate 当已打开时寻找到EOF
ios::binary 以二进制模式打开文件(否则表示字符串)
ios::in 为读取打开文件 (ifstream的默认打开方式,文件不存在,就无法打开文件,还是创建新文件?)
ios::out 为写入打开文件 (ofstream的默认打开方式,文件不存在,则建立新文件,文件存在则直接清空文件内容)
ios::trunc 覆盖存在的文件 (读写前先将文件长度截断为0)
注意:(1)fstream默认的为ios::out|ios::in
(2)ios::in|ios::app,读追加,文件不存在就无法打开
(3)Ios::out|ios::app,写追加,文件不存在则建立新文件,文件存在则保留内容继续在末尾追加。打开文件后,文件指针在开始处,一旦即将写文件指针移到文件末尾开始完成写操作。
(4)Ios::out|ios::ate|ios::app同上述,文件指针移动到末尾
(5)Ios::in|ios::out以读写方式打开文件,文件不存在打开失败,若文件存在则可以打开,打开后文件指针在开头开始读、写
(6)读写操作不能混用,在写(读)模式中使用读(写)操作会将文件指针置空,直接关闭文件
(7)文件打开失败则调用文件流的指针,返回-1
(8)任何读写操作都会自动移动文件指针
(9)Ios::in|ios::out以可读可写的方式打开文件
如果open()失败,当用于一个布尔表达式中时,作为结果的流会给出对错误的评估。例如:
ifstream inputStream("file.txt");
if( !inputStream ) {
cerr << "Error opening input stream" << endl;
return;
}
7.close函数
语法: void close();
Tclose()函数关闭相关的文件流。
当文件读写操作完成之后,我们必须将文件关闭以使文件重新变成可访问的。成员函数close(),它负责将缓存中的数据排放出来并关闭文件。这个函数一旦被调用,原先的流对象就可以被用来打开其他文件了,这个文件也可以被其他进程访问了。为防止流对象被销毁时还联系着打开的文件,析构函数将自动调用关闭函数close()。
- 文件读写函数汇总
- Android读写文件汇总
- MATLAB读写文件汇总
- 【Android读写文件方法汇总】
- Android 读写文件方法汇总
- 文件读写操作汇总解析
- 文件读写函数 -- 字符串读写
- 文件读写函数 -- 字符串读写
- API函数读写文件
- Matlab 文件读写函数
- Matlab文件读写函数
- 文件读写API函数
- fopen文件读写函数
- 文件读写函数
- 读写文件函数【模板】
- C文件读写函数
- 文件读写相关函数
- 安卓文件读写操作方法汇总
- 「Chris Richardson 微服务系列」使用 API 网关构建微服务
- php 在mac上为php添加pcntl扩展
- ORA-23421
- 利用socket上传文件
- java excel导出并下载
- 文件读写函数汇总
- 使用Maven搭建Struts2项目
- leetCode No.199 Binary Tree Right Side View
- Android 编程技巧之 ----- 解决国内 GPS 定位难的问题
- 洛谷 P1027 CODE[VS] 1041 [NOIP2001 T4] Car的旅行路线
- Mysql开发技巧之Join从句
- 如何编辑pdf 删除pdf中不要的页面
- linux 下安装redis
- bzoj usaco 1231