在C++中输入输出到指定文件,或者从指定文件中读出数据使用fstream类较为方便。

1.将数据写到磁盘的指定文件中

首先第一步是加头文件#include <fstream>,引入库函数

第二步,声明一个ofstream对象,调用ofstream的成员函数open函数,与指定的文件相关联

第三步,使用<<向文件中写入数据,注意<<操作符已经在库函数里重载过,所以直接调用即可。

最后一步,关闭输出流,调用close()函数

#include <iostream>
#include <fstream>
using namespace std;int main(){ofstream outfile;outfile.open("D:\\data.txt");outfile<<"随机产生的序列:"<<endl;for(int i=0;i<10;i++){outfile<<i<<endl;}outfile.close();return 0;
}

在D盘data.txt文件中,应该是这样的效果:

注意,这里的data.txt文件可以提前创建,当然也可以有程序自动创建,也就是说当程序执行到该步时,发现该目录下没有该文件,那么会自动地生成一个文本文件。

在这里有时候会出现这样的问题,当我的代码是这样的:

#include <iostream>
#include <fstream>
using namespace std;int main(){ofstream outfile;outfile.open("D:\\data.txt");outfile<<"随机产生的序列:"<<endl;for(int i=0;i<10;i++){outfile<<i<<" ";     //注意这行与上面的区别 }outfile.close();return 0;
}

本意是想将数字横着输出一行,那么到底有没有实现这样的功能呢?

这里要分情况,如果是Dev或者其他比较流行的编译器,是没有任何问题的,效果如下:

但如果是Microsoft visual 6.0这种比较老式的编译器,就会出现这样的情况:

很明显,数字不见了。在此声明,这种情况只会在比较老式的编译器中出现。

原因是要写入的数据在缓冲区内,还没有保存到文本中,解决办法是写完之后刷新一次,调用flush()函数来清空缓冲区。

#include <iostream>
#include <fstream>
using namespace std;int main(){ofstream outfile;outfile.open("D:\\data.txt");outfile<<"随机产生的序列:"<<endl;for(int i=0;i<10;i++){outfile<<i<<" ";     //注意这行与上面的区别 }outfile.flush(); outfile.close();return 0;
}

这里需要说明一下原理:

当程序向输出设备中输出数据时,输出的数据先被存放在计算机缓冲区(Buffer)内。当缓冲区存满时,这些数据才真正地输出到输出设备。但是,如果输出的字符序列中出现了endl控制符,那么缓冲区内的所有数据将立即输出到输出设备,而无论缓冲区是否已经存满。因此,endl的作用将光标移动到输出设备中下一行开头处,并且清空缓冲区。
很有可能,出现在程序终止时,并没有输出所有的输出数据的情况。这是因为在程序终止时,缓冲区不一定是满的,所有也就没有将缓冲区的数据写到输出设备。
在C++中,可以使用flush函数来清空缓冲区,即使缓冲区中的数据不是满的。

2.将磁盘文件中的数据读到控制台

原理和写到文件类似,就是一个逆过程。

#include <iostream>
#include <fstream>
using namespace std;int main(){ifstream infile;infile.open("D:\\data.txt");string str;infile >> str;cout<<str<<endl;infile.close();return 0;
}

fstream用法总结 C++相关推荐

  1. c++ fstream用法

    今天介绍一个复制 粘贴的函数,用fstream实现 #include "stdafx.h" #include<iostream> #include<fstream ...

  2. fstream用法总结

    在C++中输入输出到指定文件,或者从指定文件中读出数据使用fstream类较为方便. C++中处理文件类似于处理标准输入和标准输出.类ifstream.ofstream(向文件中写入)和fstream ...

  3. C语言fstream用法,c++ fstream中seekg()和seekp()的用法

    先说一下C语言中fseek()的功能: 函数原型:int fseek(FILE *fp, LONG offset, int origin) 参数含义:fp 文件指针 offset 相对于origin规 ...

  4. fstream 头文件作用

    原文出自[比特网],转载请保留原文链接:http://soft.chinabyte.com/database/460/11433960.sh 查看全文 http://www.taodudu.cc/ne ...

  5. 【C++】【一日一练】读写文件小实例【20140510】

    需要反省,说好一日一练的,昨天周五就偷懒出去逛了逛...吾当一日三省吾身... 今天的练习是写一个小程序,需要用到文件的读写,不过越写越长,又用到了很多乱七八糟的内置类什么的,就当是复习了吧,大概涉及 ...

  6. c++文件流基本用法(fstream, ifstream, ostream)

    原文链接 前言: c++的文件流处理其实很简单,前提是你能够理解它.文件流本质是利用了一个buffer中间层.有点类似标准输出和标准输入一样. c++ IO的设计保证IO效率,同时又兼顾封装性和易用性 ...

  7. fstream ,ifstream,ofstream的用法详解

    fstream的使用方法 ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间;  在C++中,有一个stream这个类,所有的I/O都以这个"流&q ...

  8. C++读写文件操作(fstream、ifstream、ofstream、seekg、seekp、tellg、tellp用法)

    本文主要总结用C++的fstream.ifstream.ofstream方法读写文件,然后用seekg().seekp()函数定位输入.输出文件指针位置,用tellg().tellp()获取当前文件指 ...

  9. fstream的用法

    解析ifstream 与ofstream的用法     2007-01-29 10:23:17 大 中 小 这个小知识点迷糊了很久了,前段时间始终没有搞清楚,今天又拿过来看的时候好象明白了点..... ...

最新文章

  1. Spring Security-- 验证码功能的实现
  2. 前端之JavaScript 02
  3. 外网访问内网Tornado
  4. 06_注册时密码加密
  5. 安装IIS服务(Internet信息服务(Internet Information Services,简写IIS,互联网信息服务)
  6. 10分钟临时邮箱,无限邮箱
  7. 盛格塾丨品鉴《金石录后序》
  8. python写excel宏_使用python执行excel的VBA(宏)
  9. 先尝甜头后食苦果 曾经的光伏巨头如今都身在何方?
  10. SpringCache报错解决
  11. SQLserver基础--语句、存储过程(七)
  12. 安全研究 # Neural Network-based Graph Embedding for Cross-Platform Binary Code Similarity Detection
  13. Learning Photoshop Elements 15 Photoshop Elements 15教程 Lynda课程中文字幕
  14. UVA1665 Islands (并查集)
  15. 安卓沉浸式状态栏_《宫廷秘传》今日安卓计费删档开测
  16. 数据移动指令-----mov,lea,xchg
  17. Jboss与jdk版本不兼容问题
  18. C/C++编程学习 - 第19周 ⑩ 派
  19. 3. Oracle数据库在Linux系统安装步骤
  20. 计算机视觉、机器学习、图形学等学习资料网站

热门文章

  1. 传输层协议TCP(5)
  2. Android项目:基于Android的手机音乐播放器的设计
  3. linux命令如何分类,Linux系统命令的两种分类
  4. 在word的文字右上角添加符号(插入上标)?
  5. 现代函数概念的“序偶”定义
  6. 熟知ghost参数 恢复系统没烦恼【xpghost】
  7. 海信android4.4.2电视怎么投屏,海信电视怎么投屏
  8. 俩种方式找出Excel中相同和不同的数据
  9. java实验:正n多边形类的定义与使用
  10. 基于linux下的shell脚本的编写