定义数据流对象指针

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

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. linux 命令 sort

    Linux下的sort排序命令详解(一) 1 sort的工作原理 sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出. [zook ...

  2. Hive(10)-文件存储格式

    Hive支持的存储数据的格式主要有:TEXTFILE .SEQUENCEFILE.ORC.PARQUET 一. 列式存储和行式存储 左边为逻辑表,右边第一个为行式存储,第二个为列式存储 1. 行式存储 ...

  3. Keil MDK最新版 5.25介绍及下载地址

    看到Keil MDK又出新版咯,分享给大家 Keil MDK-ARM 5.25 uVision5开发工具下载地址:http://www.myir-tech.com/soft.asp?id=1140 K ...

  4. sqli-labs (less-8-less-10)

    盲注需要掌握一些MySQL的相关函数:length(str):返回str字符串的长度.substr(str, pos, len):将str从pos位置开始截取len长度的字符进行返回.注意这里的pos ...

  5. 20155318 《Java程序设计》实验四 (Android程序设计)实验报告

    20155318 <Java程序设计>实验四 (Android程序设计)实验报告 实验内容 基于Android Studio开发简单的Android应用并部署测试; 了解Android.组 ...

  6. 20155323 第三次实验 敏捷开发与XP实践

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

  7. 20145234黄斐《Java程序设计》实验二—Java面向对象程序设计

    1.提交最后三个测试用例都通过的截图,截图上要有画图加水印,输入自己的学号. 2. 以 TDD的方式研究学习StringBuffer 3.对设计模式示例进行扩充,体会OCP原则和DIP原则的应用,初步 ...

  8. 【转载】从零实现3D图像引擎:(1)环境配置与项目框架

    原文:从零实现3D图像引擎:(1)环境配置与项目框架 0. 要学懂3D程序设计,必然要精通3D相关的线性代数.3D几何.复分析等相关知识,我也因为如此才开始这个博客系列的写作,不自己实现,就不是自己的 ...

  9. 【转载】深入理解Direct3D9

    原文:Effulgent的<深入理解Direct3D9>整理版(转) 深入理解Direct3D9 深入理解D3D9对图形程序员来说意义重大,我把以前的一些学习笔记都汇总起来,希望对朋友们有 ...

  10. day6 break continue for

    .for .break (整个while循环全部结束) )打印1-100的偶数.py )打印1-100的20个偶数.py )while嵌套中的break (就近原则) .continue 错误用法: ...