经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C++ » 查看文章
c++读取文件操作和写入文件
来源:cnblogs  作者:归雁  时间:2021/12/31 9:04:17  对本文有异议

在C++中与读取文件和写入文件简单操作有关的类分别有ifstream(文件读入)、ofstream(文件写出)、fstream (文件读入和写出)。

名称 作用
ifstream 文件读入
ofstream 文件写出
fstream 文件读入和写出

对于文件操作操作输入输出类中具有一个open的函数用来打开文件使用的。其原型为:
void open(const char* filename,int mode,int access);
其中各个参数的含义如下表:

参数 作用
filename 需要打开的文件地址名称
mode 打开文件的方式
access 打开文件的属性

其中打开文件的方式在类中ios中定义的常用值为下表,在使用过程中可以用“|”把以上属性连接起来表或的关系,如ios::out|ios::binary

mode常用的值 作用
ios::app 以追加的方式打开文件
ios::ate 文件打开后定位到文件尾,ios:app就包含有此属性
ios::binary 以二进制方式打开文件,缺省的方式是文本方式。两种方式的区别见前文
ios::in 文件以输入方式打开(文件数据输入到内存)
ios::out 文件以输出方式打开(内存数据输出到文件)
ios::nocreate 不建立文件,所以文件不存在时打开失败
ios::noreplace 不覆盖文件,所以打开文件时如果文件存在失败
ios::trunc 如果文件存在,把文件长度设为0

 打开文件的属性取值是:

access常用的值 作用
0 普通文件,打开访问
1 只读文件
2 隐含文件
4 系统文件

再打开文件的过程中,仅需要调用open函数就可以打开文件并对文件内容进行操作。如

查看代码
  1. ofstream myfile("F:\\zmxs\\date.txt",ios::app);
  2. myfile<<"写入!"<<endl;
  3. myfile.close();

由上面可以看出在写入和写出时,用到了一个重要的运算符插入器(<<)。其实在stream类中存在两个重要的运算分别是插入器(<<)和析取器(>>)在c++中cin和cout经常可以被看到它主要实现的I/O操作。下面对插入器和析取器进行解释:
  1、插入器(<<)
 向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout<<"Write Stdout"<<'\n';就表示把字符串"Write Stdout"和换行字符('\n')输出到标准输出流。
 2、析取器(>>)
 从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x;就表示从标准输入流中读取一个指定类型的数据。

同时文件操作完成后需要对文件进行关闭,让文件进行保存。使用myfile.close();myfile为你定义这个操作名称。

使用者在操作O的时候,常常使用到文件指针,通俗来讲就是你在编辑文本文件时插入文本的位置,被称为文件指针。对文件指针的位置我们可以通过seekg函数进行操作

文件指针位置在c++中的用法:

seekg常用的值 含义
ios::beg 文件头
ios::end 文件尾
ios::cur 当前位置

举个栗子:

file.seekg(0,ios::beg); //让文件指针定位到文件开头

file.seekg(0,ios::end); //让文件指针定位到文件末尾

file.seekg(10,ios::cur); //让文件指针从当前位置向文件末方向移动10个字节

file.seekg(-10,ios::cur); //让文件指针从当前位置向文件开始方向移动10个字节

file.seekg(10,ios::beg); //让文件指针定位到离文件开头10个字节的位置

常用的错误判断方法:

good() 如果文件打开成功

bad() 打开文件时发生错误

eof() 到达文件尾

文件操作的代码解释

查看代码
  1. #include<iostream>
  2. #include <string>
  3. #include<fstream>
  4. #include<istream>
  5. using namespace std;
  6. int main()
  7. {
  8. ofstream outfile("F:\\zmxs\\date.txt",ios::app);
  9. if(outfile.good())
  10. {
  11. outfile<<"写入!"<<endl;
  12. outfile.close();
  13. }
  14. string temp;
  15. ifstream myfile("F:\\zmxs\\date.txt");
  16. ///直接使用while会读取不到第一行
  17. do
  18. {
  19. myfile >> temp;
  20. cout<<temp<<endl;
  21. }while(getline(myfile,temp));
  22. myfile.close();
  23. }

原文链接:http://www.cnblogs.com/guiyan/p/15733510.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号