在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函数就可以打开文件并对文件内容进行操作。如

查看代码
ofstream myfile("F:\\zmxs\\date.txt",ios::app);
myfile<<"写入!"<<endl;
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() 到达文件尾

文件操作的代码解释

查看代码
#include<iostream>
#include <string>
#include<fstream>
#include<istream>
using namespace std;
int main()
{
ofstream outfile("F:\\zmxs\\date.txt",ios::app);
if(outfile.good())
{
outfile<<"写入!"<<endl;
outfile.close();
}
string temp;
ifstream myfile("F:\\zmxs\\date.txt");
///直接使用while会读取不到第一行
do
{
myfile >> temp;
cout<<temp<<endl;
}while(getline(myfile,temp));
myfile.close(); }

c++读取文件操作和写入文件的更多相关文章

  1. JAVASE02-Unit06: 文件操作——File 、 文件操作—— RandomAccessFile

    Unit06: 文件操作--File . 文件操作-- RandomAccessFile java.io.FileFile的每一个实例是用来表示文件系统中的一个文件或目录 package day06; ...

  2. java文件操作(普通文件以及配置文件的读写操作)

    转自:java文件操作(普通文件以及配置文件的读写操作) 读取普通文件 : /** * xiangqiao123欢迎你 如果对代码有疑问可以加qq群咨询:151648295 * * 读取MyFile文 ...

  3. JAVA文件操作类和文件夹的操作代码示例

    JAVA文件操作类和文件夹的操作代码实例,包括读取文本文件内容, 新建目录,多级目录创建,新建文件,有编码方式的文件创建, 删除文件,删除文件夹,删除指定文件夹下所有文件, 复制单个文件,复制整个文件 ...

  4. Unix无缓冲文件操作函数、文件信息查询

    问题描述:         Unix无缓冲文件操作函数.文件信息查询 问题解决:        struct stat 结构体信息: 具体代码: 具体源文件:

  5. 孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容

     孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.打开文件后,要务必记得关闭,所以一般的写法应当 ...

  6. C++文件操作:打开文件和写入文件

    如果程序的运行结果仅仅显示在屏幕上,当要再次查看结果时,必须将程序重新运行一遍:而且,这个结果也不能被保留. 如果希望程序的运行结果能够永久保留下来,供随时查阅或取用,则需要将其保存在文件中. 文件分 ...

  7. C++文件操作:打开文件和写入文件 zz

    http://www.weixueyuan.net/view/5825.html 如果程序的运行结果仅仅显示在屏幕上,当要再次查看结果时,必须将程序重新运行一遍:而且,这个结果也不能被保留. 如果希望 ...

  8. PHP 文件操作类(创建文件并写入) 生成日志

    <?php /** * 文件操作(生成日志)支持多条插入 * (假设插入多条语句并换行 用','逗号分开) * */ class log { public $path = './info.txt ...

  9. opencv:图像的读取,显示,写入文件

    #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace st ...

随机推荐

  1. composer设置阿里云镜像源

    composer设置阿里云镜像源 1. 首先把默认的源给禁用掉 composer config -g secure-http false 2. 再修改镜像源 这里我使用阿里的源 composer co ...

  2. 毕业设计之zabbix之nginx状态监控

    监控脚本: [root@webone.quan.bbs ~]$vim /usr/local/zabbix/script/ngx_status.sh #!/bin/bash##************* ...

  3. eclipse不自动弹出提示的解决办法(eclipse alt+/快捷键失效)

    转载:http://yuncode.net/article/a_53bf6888b6f5065 我的问题:在jsp中使用"alt+/"不能够自动导入java包.利用3,4解决问题 ...

  4. python—模拟生成双色球号和大乐透号

    下边这个脚本,比较适合初级学习基本python语法用.但是,不精炼建议可参考https://www.cnblogs.com/Formulate0303/p/14031748.html的写法. 大乐透玩 ...

  5. RabbitMQ消息中介之Python使用

    本文介绍RabbitMQ在python下的基本使用 1. RabbitMQ安装,安装RabbitMQ需要预安装erlang语言,Windows直接下载双击安装即可 RabbitMQ下载地址:http: ...

  6. Qemu/kvm虚拟化源码解析学习视频资料

    地址链接:tao宝搜索:Linux云计算KVM Qemu虚拟化视频源码讲解+实践​https://item.taobao.com/item.htm?ft=t&id=646300730262 L ...

  7. TCP的慢启动、拥塞避免、重传、快恢复乱七八糟总是记不清?11个连环问让你一次性打通任督二脉

    摘要:如果你的开发过程涉及数据传输,一直在重传.超时之类的方案里有困惑的话,不妨重新学一学可靠性最精致的TCP协议. 本文分享自华为云社区<TCP的慢启动.拥塞避免.重传.快恢复乱七八糟总是记不 ...

  8. Scala(六)【模式匹配】

    目录 一.基本语法 二.匹配固定值 三.守卫 四.匹配类型 五.匹配集合 1.Array 2.List 3.元祖 4.对象和样例类 六.偏函数 七.赋值匹配 八.for循环匹配 一.基本语法 在匹配某 ...

  9. [JAVA]动态代理与AOP的千丝万缕

    动态代理与AOP的联系 别的不说,直接上图 首先是AOP切面编程 什么是切面?(自己心里想想就ok)所以所谓的切面编程,你也就懂得大体了,只是这个被切的是个程序而已 那么AOP与动态代理有什么关系呢? ...

  10. db9串口接头的定义

    这个接头都是以公头为准,所有接头还是以公头去记. RS-232端(DB9公头/针型)引脚定义 2: RXD 3:TXD 5:GND 1/4/6:内部相链接 7/8   :内部相链接 1.RS-232端 ...