学习c++ofstream和ifstream
定义数据流对象指针
对文件进行读写操作首先必须要定义一个数据流对象指针,数据流对象指针有三种类型,它们分别是:
Ifstream:表示读取文件流,使用的时候必须包含头文件“ifstream”;
ofstream:表示文件写入流,使用的时候必须包含头文件“ofstream”;
fstream:表示文件读取/写入流,使用的时候必须包含头文件“fstream”;
ofstream是从内存到硬盘,ifstream是从硬盘到内存
打开文件
打开文件有两种方式。一种其一是使用open函数,其二是使用数据流对象的构造函数。这两个函数调用的参数基本上一致的。
ofstream outfile;
outfile.open("file.dat", ios::out | ios::in );
| 参数 | 打开方式 |
|---|---|
| ios::in | 为输入(读)打开文件 |
| ios::out | 为输出(写)打开文件 |
| ios::app | 所有输出附加在文件末尾 |
| ios::trunc | 若文件已存在先删除文件 |
| ios::binary | 二进制方式 |
文件读写操作
由于类ofstream, ifstream 和fstream 是分别从ostream, istream 和iostream 中引申而来的,所以文件的读写操作与使用控制台函数cin和cout一样,“<<”表示对文件进行写操作,“>>”表示对文件进行读操作。根据数据流读写的状态,有4个验证函数,它们分别是:
· bad()
如果在读写过程中出错,返回 true 。例如:当我们要对一个不是打开为写状态的文件进行写入时,或者我们要写入的设备没有剩余空间的时候。
· fail()
除了与bad() 同样的情况下会返回 true 以外,加上格式错误时也返回true ,例如当想要读入一个整数,而获得了一个字母的时候。
· eof()
如果读文件到达文件末尾,返回true。
· good()
这是最通用的:如果调用以上任何一个函数返回true 的话,此函数返回 false 。
获得或设置流指针
Long tellg() 和 long tellp()这两个成员函数不用传入参数,返回一个整数。tellg()用于.ifstream,指向下一个将被读取的元素。tellp()用于.ofstream,指向写入下一个元素的位置。
seekp:设置输出文件流的文件流指针位置
seekg:设置输入文件流的文件流指针位置
关闭文件
close();
例子
- 向文件中写入数据
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
ofstream file1("C:/Users/Mac/Desktop/1234.txt");
if(!file1)
{
cout<<"文件不能打开"<<endl;
}
else
{
file1<<"learning ios is very useful!"<<endl;
file1<<"1 2 3 4 "<<endl;
}
file1.close();
}

- 逐词读取
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
ifstream file2("C:/Users/Mac/Desktop/1234.txt");
if(!file2)
{
cout<<"文件不能打开"<<endl;
}
else
{
string s;
while(file2>>s)
{
cout<<s<<endl;
}
file2.close();
}
}

- 逐行读取,行存入字符数组
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
ifstream file2("C:/Users/Mac/Desktop/1234.txt");
if(!file2)
{
cout<<"文件不能打开"<<endl;
}
else
{
char s[100];
while(file2.getline(s,100))
{
cout<<s<<endl;
}
file2.close();
}
}

- 逐行读取,行存入字符串
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
ifstream file2("C:/Users/Mac/Desktop/1234.txt");
if(!file2)
{
cout<<"文件不能打开"<<endl;
}
else
{
string s;
while(getline(file2,s))
{
cout<<s<<endl;
}
file2.close();
}
}
结果如上图
学习c++ofstream和ifstream的更多相关文章
- (转载)C++ ofstream和ifstream详细用法
原文出自[比特网],转载请保留原文链接:http://soft.chinabyte.com/database/460/11433960.sh [导读] ofstream是从内存到硬盘,ifstream ...
- 转载:ofstream和ifstream详细用法
ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间; 在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O, ...
- C++ ofstream和ifstream
ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间; 在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O, ...
- C++ ofstream和ifstream详细用法
转载地址:http://soft.chinabyte.com/database/460/11433960.shtml ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就 ...
- C++ ofstream和ifstream具体的方法和C语言file说明
ofstream是从内存到硬盘,ifstream是从硬盘到内存,事实上所谓的流缓冲就是内存空间; 在C++中,有一个stream这个类,全部的I/O都以这个"流"类为基础的,包含我 ...
- ofstream和ifstream
ofstream(输出流)是从内存到硬盘,ifstream(输入流)是从硬盘到内存. //#include<iostream> #include<fstream> using ...
- ofstream和ifstream详细用法
ASCII和二进制文件的输入输出 First:包含头文件#include <fstream> ASCII输入: 首先要创建一个in-stream对象:ifstream fin(" ...
- C++的ofstream与ifstream使用
基本理解: ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间; 在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的 ...
- C++文件写入,读出函数ofstream,ifstream的使用方法
ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间. 1.插入器(<<) 向流输出数据.比如说系统有一个默认的标准输出流(cout),一般情况下 ...
随机推荐
- 关于iOS启动页launchImage无法显示解决办法
在没有美工的时候,往往项目开发到一半,才拿到icon和launchImage图片,这时在添加对应图片之后发现并没有正常显示,这就蛋疼了,以下列出几种解决方式. 关于设置launchImage: 工程配 ...
- Easy-UI中datebox的默认显示当前日期的最简单的两种方法
在中有一个Today按钮就是实现显示当前日期,所以我们在src/jquery.datebox.js文件中可以找到currentText:'Today'.所以我们可以使用'currentText'和'T ...
- 如何安装使用MinDoc搭建个人在线wiki文档
MinDoc是什么? MinDoc是一个在线的文档管理系统,该系统适用于团队.个人等使用.开发者最初的目的是为了便于公司内部使用,仿照看云开发.有laravel版本以及golang版本.不过larav ...
- macOS安装MongoDB
先在macOS里安装一个很好的插件 1.百度搜索homebrew 或 直接进入https://brew.sh 2.复制网页下面的命令符 /usr/bin/ruby -e "$(curl -f ...
- 基于OpenCV的微信跳一跳外挂
摘要:微信跳一跳是时下热门的微信小游戏,基本原理是根据按压屏幕的时间控制棋子跳过的距离,使其跳到下一个方块上:现利用Android adb工具,PC端获取实时截图,使用OpenCV库分析图片计算距离, ...
- A1038
用一串数拼接成一个数,输出最小的. 思路:使用string和相关的函数. #include<iostream> #include<cstdio> #include<str ...
- My First
刚入职不到2个月吧,还在实习,月底拿毕业证转正.工作期间遇到很多麻烦问题,有的解决了,有的解决不了,换了个方法实现,挺无奈的.弄个博客,记录下平常遇到的问题和解决方式,也省的每次拿个笔记下来了…… 公 ...
- HDFS要点
namenode存储的数据: 主控服务器主要有三类数据:文件系统的目录结构数据,各个文件的分块信息,数据块的位置信息(就数据块放置在哪些数据服务器上...).在GFS和HDFS的架构中,只有文件的目录 ...
- 20155234 2016-2017-2《Java程序设计》课程总结
20155234 2016-2017-2<Java程序设计>课程总结 每周作业链接汇总 预备作业1:师生关系 预备作业2:优秀技能经验 预备作业3:虚拟机linux初接触 第一周作业:认识 ...
- 20155321实验二 Java面向对象程序设计
实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步骤 单元测试 三种代码 伪代码:使用自然语言来显示设 ...