C++中的“流”和fstream类的一点总结
来源:互联网 发布:淘宝买号 编辑:程序博客网 时间:2024/06/07 02:02
感觉书里面对流的介绍非常的玄学,今天上网查了一下,做个笔记
ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间。所谓output的意思可以理解为内存输出数据到其他设备
(例如硬盘或者显示器),而input可以理解为其他设备输出数据到内存。stream(流)就是这个数据交换的过程。在输入和输出的过程中,因
为不同设备之间有很大的速度差异,因此肯定要建立buffer(缓冲区),buffer是一块内存。
在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:
1、插入器(<<)
向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout<<”Write Stdout”<<’\n’;就表示把字符串”Write Stdout”和换行字符(‘\n’)输出到标准输出流。
2、析取器(>>)
从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x;就表示从标准输入流中读取一个指定类型(即变量x的类型)的数据。
iostream类有一个子类叫fstream,是用来处理文件对象的(file-stream)。下面介绍一点fstream类的用法。仅仅把我最近用到的记下来,慢慢更新,不会面面俱到!
std::getline()函数
下面是std::getline()的声明,存在于string.h中。
istream& getline ( istream& is, string& str, char delim );istream& getline ( istream& is, string& str );
从上面的声明可以看到,getline()返回值是isteam&,有三个参数。
第一个参数 istream& is 是一个输入流,将该输入流中的第一行数据输入第二个参数 string& str 中。第三个参数是换行标识符,默认是回车。你也可以通过显式输入第三个参数,来重载换行符。
•功能:
–从输入流中读入字符,存到string变量
–直到出现以下情况为止:
•读入了文件结束标志
•读到一个新行
•达到字符串的最大长度
–如果getline没有读入字符,将返回false,可用于判断文件是否结束
下面是一个getline()的小例子
//读取某个文本文档,用getline()把文档中的每一行读取下来并加入一个vector,把vector中的元素逐个输出#include "stdafx.h"#include <iostream>#include <fstream>#include <string>#include <vector>int _tmain(int argc, _TCHAR* argv[]){ vector<string> words; string word; ifstream input("c:\\1.txt"); //文档的内容和路径自己随便弄一个 while(!input.eof()){ //eof(),iostream类的成员函数,判断当前流是否到文件末尾 getline(input,word); //把getline()放在while中也可以。什么也没读入的时候,它返回false。 words.push_back(word); cout << word << endl; cout << "test 1" << endl; if(input.failbit != 0) //读取到文件末尾时,failbit值不为0 {cout << "test" << endl;} } for(auto i = words.begin();i != words.end();++i) { cout << *i << endl; } input.close(); system ("pause"); return 0;}
- C++中的“流”和fstream类的一点总结
- fstream、ifstream、ofsream使用的一点总结
- fstream 一点总结
- fstream的一点用法
- fstream和ofstream使用上的一点区别
- c的一点总结
- <C++>FILE和fstream
- fstream的用法总结
- C基于流fstream的文件操作
- C基于流fstream的文件操作
- 关于java中的线程和线程池的一点总结
- 类和对象的一点小总结
- <C/C++> IO流 cout/fstream的使用
- C和C++中的一点泛化技巧
- C++中的fstream类 简介
- 关于Lua中的一点小总结(主要针对的是C调用Lua)
- STL中的set容器的一点总结
- STL中的map容器的一点总结
- c++之封装——string类型的实现
- github的一点基本操作
- HDOJ 3537 Daizhenyang's Coin
- 面向对象的特征有哪些方面
- C++中关于复杂的多维数组声明的总结
- C++中的“流”和fstream类的一点总结
- 前端面试题整理
- webpack(一)安装
- 简单电话本实现
- windows下配置React Native开发环境
- Java中Collection和Collections的区别
- 国内一线互联网公司内部面试题库(转)
- 修改注释模板
- Android基础----Intent