定义数据流对象指针

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

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. ES6学习之-let 和const命令

    let 和const命令 let命令 用来声明变量,类似于var .let声明的变量 只在let命令所在的代码块内有效. 在for循环里也是如此 每次循环其实都是一个代码块 function fn() ...

  2. 嵌入式C语言自我修养 12:有一种宏,叫可变参数宏

    12.1 什么是可变参数宏 在上面的教程中,我们学会了变参函数的定义和使用,基本套路就是使用 va_list.va_start.va_end 等宏,去解析那些可变参数列表我们找到这些参数的存储地址后, ...

  3. Capabilities & ChromeOptions

    https://sites.google.com/a/chromium.org/chromedriver/capabilities http://stackoverflow.com/questions ...

  4. Selenium_python自动化跨浏览器执行测试(简单多线程案例)

    发生背景: 跨浏览器测试是功能测试的一个分支,用以验证web应用在不同浏览器上的正常工作,通常情况下,我们都期望web类应用能够被我们的用户在任何浏览器上使用,例如有的人喜欢IE浏览器上使用,有的人喜 ...

  5. Angular 7 版本

    Angular 7 版本 这是跨整个平台的主要版本,更新包括核心框架,Angular Material和CLI. 如何更新到v7 可以访问update.angular.io以获取有关更新应用程序的详细 ...

  6. spark 例子倒排索引

    spark 例子倒排索引 例子描述: [倒排索引(InvertedIndex)] 这个例子是在一本讲spark书中看到的,但是样例代码写的太java化,没有函数式编程风格,于是问了些高手,教我写了份函 ...

  7. GNU Radio在SDR领域的应用

    1 Software Defined Radio 软件无线电(Software Defined Radio,SDR)是一种实现无线通信的新概念和体制.其中以往只能在硬件中实现的组件(例如混频器,滤波器 ...

  8. websocket简单入门

    今天说起及时通信的时候,突然被问到时用推的方式,还是定时接受的方式,由于之前页面都是用传统的ajax处理,可能对ajax的定时获取根深蒂固了,所以一时之间没有相同怎么会出现推的方式呢?当被提及webs ...

  9. 20155202 《Java程序设计》实验三(敏捷开发与XP实践)实验报告

    20155202 <Java程序设计>实验三(敏捷开发与XP实践)实验报告 代码托管 实验内容 XP基础 XP核心实践 相关工具 实验要求 1.没有Linux基础的同学建议先学习<L ...

  10. 20155212 实验三 敏捷开发与XP实践

    20155212 实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器&g ...