文章17章 进、输出和文件

1.当到达输入句子。他将刷新输出缓冲区满输出电流

2.streambuf分类 它提供了用于各种操作的一个缓冲

ios_base类表示流的一般特征

ios基础的类ios_base。它包括一个点streambuf对象的指针

ostream类从ios派生。提供可输出方法

istream类从ios派生,提供可输入方法

iostream类基于ostream和istream,继承了输入和输出方法

3.包括iostream则自己主动创建了8个流对象

cin 标准输入 wcin 宽字符流

cout 标准输出 wcout 宽字符流

cerr 标准错误流。没有被缓冲。直接发送给屏幕 wcerr 宽字符流

clog 标准错误流。被缓冲 wclog处理wchar_t宽字符流

4.C++的全部基本类型P737

5.ostream

put(),显示字符

write(),显示字符串  不会遇到空字符时自行停止,会依据參数的长度。显示该长度的字符

刷新缓冲区:当遇到换行符;当输入将要发生时

强制刷新缓冲区cout<<flush;或flush(cout)

6.cout格式化输入

对浮点数有新变化

新式:浮点类型被显示为6位。末尾的0不显示。数字以定点表示法显示或科学计数法表示。当指数大于等于6或小于等于-5时,科学计数法表示

旧式:浮点类型被显示为带6位小数,末尾的0不显示。数字以定点表示法显示或科学计数法表示。当指数大于等于6或小于等于-5时,科学计数法表示

7.ios_base类存储了描写叙述格式状态的信息

dex hex oct控制符。实际上是函数 如hex(cout)以16进制打印

通常是cout<<hex 会相当于hex(cout)

int width() 返回当前设置

int width(int i) 宽度设置为i。并返回曾经的值

width()方法仅仅影响显示的下一个项目,然后恢复默认值

cout.fill(char) 输出长度不满足设定长度。多余的就会使用char填充

设置精度:cout.precision(int)

8.ios_base类提供了setf()函数可以控制多种格式化特性P747-P751

9.一些标准控制符 P751 实际上是函数

10.头文件iomanip

可提供经常使用控制符,如

setprecision(int)设置精度

setfill(char)设置填充字符

setw(int)设置字段宽度

使用方法:如cout<<setw(4);

11.使用cin进行输入

cin>>staff_size

cin的參数和返回值都是使用引用。这表明能改动变量

cin和cout对象包括一个描写叙述流状态的数据成员,从ios_base继承。

流状态由3个ios_base元素组成 :eofbit。badbit,failbad

eofbit:当cin操作到文件尾时

failbit:未能读取到预期的字符时

badbit:在一些无法诊断的失败破坏流时

流状态的一些元素和函数P756

12.使用cin>>,cin.get(ch) 和cin.get()P761

使用原则:

假设跳过空白字符,使用cin>>更方便

希望检查每个字符,使用cin.get(ch) 和cin.get()都能够 仅仅是要处理换行符

13.字符串输入 getline(),get(),ignore()P762

istream & get(char*,int,char)

istream & get(char*,int)

istream & getline(char*,int,char)

istream & getline(char*,int)

istream & cin.ignore(int = 1,int = EOF)

如cin.ignore(255,'\n');

函数调用读取并丢弃接下来的255个字符或直接到达第一个换行符

getline 假设没有抽取到不论什么字符,则设置failbit;若抽取到了行指定字符。但行里还有其它字符,则设为failbit

get 假设没有抽取到不论什么字符,则设置failbit

14.其它istream方法P764-P765

read() 如cin.read(gross,144) 与get相似,仅仅是不回在输入后加入空字符,不能成为字符串

peek() cin.peek() 返回输入流的下一个字符,可是不抽取流中的字符

gcount()

putback() 将一个字符插入到输入流的開始,读取是为开头字符

15.文件输入和输出

要加入头文件fstream

要写入文件

1.创建一个ofstream对象

2.将该对象与特定的文件关联起来

3.以使用cout的方式使用fout

ofstream fout;fout.open("hjq.txt");

读取文件

1.创建一个ifstream对象

2.将该对象与特定的文件关联起来

3.以使用cin的方式使用fcin

最后关闭fout.close()

16.创建多个流对象,则会创建多个缓冲区,互相独立

打开多个文件,就须要创建多个流对象,

17.文件模式

描写叙述文件将被怎样使用:读,写,追加等

P773-P781

18.随机存取P783-P788

19.内核格式化P788-P790

sstream

读取string对象中的格式化信息或将格式化信息写入string对象中被称为内核格式化

ostringstream outstr

istringstream instr(facts) facts是一个strig对象

最后3个内容过于少用。应用时再查看

17.8编程练习 有时间再做

预计没时间

版权声明:本文博主原创文章,博客,未经同意不得转载。

C++ Primer Plus 文章17章 进,输出和文件的更多相关文章

  1. C Primer Plus 第8章 字符输入/输出和验证输入 编程练习

    1. #include <stdio.h> int main(){ char ch; int ct = 0; while ((ch=getchar()) != EOF) ct++; pri ...

  2. C++ Primer 5th 第17章 标准库特殊设施

    C++新标准库提供了很多新功能,它们更加强大和易用. tuple类型 tuple是一种类似pair的模板,pair可以用来保存一对逻辑上有关联的元素对.但与pair不同的是,pair只能存储两个成员, ...

  3. Node.js系列文章:利用console输出日志文件

    通常我们在写Node.js程序时,都习惯使用console.log打印日志信息,但这也仅限于控制台输出,有时候我们需要将信息输出到日志文件中,实际上利用console也可以达到这个目的的,今天就来简单 ...

  4. C++ primer plus读书笔记——第17章 输入、输出和文件

    第17章 输入.输出和文件 1. 对键盘进行输入缓冲可以让用户在将输入传输给程序之前返回并更正.C++程序通常在用户按下回车键时刷新输入缓冲区. 2. 一些I/O类 streambuf类为缓冲区提供了 ...

  5. C Primer Plus_第6章_循环_编程练习

    1.题略 #include int main(void) { int i; char ch[26]; for (i = 97; i <= (97+25); i++) { ch[i-97] = i ...

  6. C Primer Plus_第5章_运算符、表达式和语句_编程练习

    Practice 1. 输入分钟输出对应的小时和分钟. #include #define MIN_PER_H 60 int main(void) { int mins, hours, minutes; ...

  7. C Primer Plus_第四章_字符串和格式化输入输出_编程练习

    Practice 1.输入名字和姓氏,以"名字,姓氏"的格式输出打印. #include int main(void) { char name[20]; char family[2 ...

  8. C++ Primer 5th 第2章 变量和基本类型

    *****代码在Debian g++ 5.3.1 / clang++ 3.8(C++11)下编写调试***** 由于部分编译器对标准遵循的不同以及自身额外的扩展,本章书中的少数知识点与实际实现存在偏差 ...

  9. 第17章 中介者模式(Mediator Pattern)

    原文 第17章 中介者模式(Mediator Pattern) 中介者模式  概述:   在软件开发中,我们有时会碰上许多对象互相联系互相交互的情况,对象之间存在复杂的引用关系,当需求更改时,对系统进 ...

随机推荐

  1. hdu 2391 Filthy Rich

    单纯dp 水一 处理时间点,第一行和第一列特殊处理: 其余的w[i][j]=show(w[i-1][j-1],w[i-1][j],w[i][j-1]); <span style="fo ...

  2. [置顶] ios 一个不错的图片浏览分享框架demo

    demo功能:一个不错的图片浏览分享框架demo.iphone6.1 测试通过.可以浏览图片,保存,微博分享到新浪,腾讯,网易,人人等. 注:(由于各个微博的接口有时候会有调整,不一定能分享成功.只看 ...

  3. Jenkins详细安装与构建部署使用教程(转)

    Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能.Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:1.持续的软件版本发布 ...

  4. hdoj 2602 Bone Collector 【01背包】

    意甲冠军:给出的数量和袋骨骼的数,然后给每块骨骼的价格值和音量.寻求袋最多可容纳骨骼价格值 难度;这个问题是最基本的01背包称号,不知道的话,推荐看<背包9说话> AC by SWS 主题 ...

  5. hdu3572 任务分配/最大流量推论全流

    意甲冠军:将n分配的任务m机.到的每个任务需要的天数(如果没有持续的日常),并能做到在哪些天任务.询问是否有计划. 典型的任务(X)----日(Y)一半的最大流量,(因为这个任务是天之间的关系)处理器 ...

  6. MySQLHA系列MHA(一)

    MHA,这是Master High Availability Manager and Tools for MySQL,一个日本MySQL专家们使用Perl语言编写的一个脚本管理工具.该工具仅适用于My ...

  7. 【Java基础】System.arraycopy()的使用详解

    由于在Java中System.arraycopy()方法在一维数组和二维数组中的表现不同,所以做了一个测试 public static void main(String[] args) { int[] ...

  8. oracle 打开trace,并分析trace

    SQL> oradebug event 10046 trace name context forever,level 8 ORA-00072: process "Unix proces ...

  9. linux学习(一个) 在unbuntu通过添加新的用户

    最近安装了双系统,开始折腾unbuntu该.Linux系统是一个多用户操作系统,非常多的人才完整的操作需要管理员权限,完全管理员权限是非常重要的.人谁是刚开始学习,般用户的权限即可了,相对于刚開始学习 ...

  10. 算法 《霍纳的方法java实践》

    [历史背景] 霍纳的方法是中国南宋时期的数学家秦九韶表述求解一元高次多项式的值的算法--正负开方术. 它也能够配合牛顿法用来求解一元高次多项式的根.在西方被称作霍纳算法(Horner algorith ...