定义数据流对象指针

对文件进行读写操作首先必须要定义一个数据流对象指针,数据流对象指针有三种类型,它们分别是:

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();
}
}

结果如上图

参考资料1 2

问题 (1)多打一行(2)文件地址要转义

学习c++ofstream和ifstream的更多相关文章

  1. (转载)C++ ofstream和ifstream详细用法

    原文出自[比特网],转载请保留原文链接:http://soft.chinabyte.com/database/460/11433960.sh [导读] ofstream是从内存到硬盘,ifstream ...

  2. 转载:ofstream和ifstream详细用法

    ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间; 在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O, ...

  3. C++ ofstream和ifstream

    ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间; 在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O, ...

  4. C++ ofstream和ifstream详细用法

    转载地址:http://soft.chinabyte.com/database/460/11433960.shtml ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就 ...

  5. C++ ofstream和ifstream具体的方法和C语言file说明

    ofstream是从内存到硬盘,ifstream是从硬盘到内存,事实上所谓的流缓冲就是内存空间; 在C++中,有一个stream这个类,全部的I/O都以这个"流"类为基础的,包含我 ...

  6. ofstream和ifstream

    ofstream(输出流)是从内存到硬盘,ifstream(输入流)是从硬盘到内存. //#include<iostream> #include<fstream> using ...

  7. ofstream和ifstream详细用法

    ASCII和二进制文件的输入输出 First:包含头文件#include <fstream> ASCII输入: 首先要创建一个in-stream对象:ifstream fin(" ...

  8. C++的ofstream与ifstream使用

    基本理解: ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间; 在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的 ...

  9. C++文件写入,读出函数ofstream,ifstream的使用方法

    ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间. 1.插入器(<<)  向流输出数据.比如说系统有一个默认的标准输出流(cout),一般情况下 ...

随机推荐

  1. PL/SQL报错:ORA-28000:the account is locked

    第一种方法(图形操作):第一步:使用PL/SQL,登录名为system,选择类型的时候把Normal修改为SYSDBA:第二步:选择users下的system,右击点击“编辑”: 第三步:修改密码,把 ...

  2. 使用tp3.2和mbUploadify.js上传图片的代码,记录一下

    HTML: <div class="form-group"> <label class="col-sm-1 control-label no-paddi ...

  3. python IO模式(多路复用和异步IO深入理解)

    1.事件渠道模型.事件渠道为异步IO的原型. 2.IO模式,一次IO调用会经历两个阶段.一.等待数据阶段,将数据从网络或者是磁盘读取到系统内核(kennel) 二.将数据从内核拷贝到进程中. 基于这两 ...

  4. Python3 urllib 爬取 花瓣网图片

    点我去我的github上看源码 **花瓣网是动态的,所以要抓包分析,,但我真的累的不行,不想写教程了,我源码里有注释

  5. 版本控制工具——SVN

    一.需求 需求之一:备份 小明负责的模块就要完成了,就在即将Release之前的一瞬间,电脑突然蓝屏,硬盘光荣牺牲!几个月来的努力付之东流 需求之二:代码还原 这个项目中需要一个很复杂的功能,老王摸索 ...

  6. 20155226 2016-2017-2 《Java程序设计》第3周学习总结

    20155226 2016-2017-2 <Java程序设计>第3周学习总结 教材学习内容总结 认识对象 类类型 Java可区分为基本类型和类类型两大类型系统,其中类类型也称为参考类型.s ...

  7. Android 学习1

    使用eclipse做为开发IDE, 导包快捷键 在显红的地方按shift+ctrl+o 另外自动补全使用alt+/

  8. 利用webbrowser自动查取地点坐标

    概述 有时候我们需要去查询某些地点的坐标,那么我们可以用百度提供的坐标拾取系统http://api.map.baidu.com/lbsapi/getpoint/index.html,但是会发现它只能一 ...

  9. 自动化之UI(autoit)

    自动化 说到自动化,我真的很不喜欢UI这层去做实践.前置条件要求比较严谨,如果不满足特定的前置条件,那么成本实在太大了. 投入与产出差过大,效果打折扣.从互联网来说,UI自动化是入门门槛很低的一种实践 ...

  10. realstudio 粒子特效问题总结

    ParticleEmitter._inner_material.flags.depth_write = true;ParticleEmitter._inner_material.flags.depth ...