《C++ Primer Plus》学习笔记11

第17章 输入、输出和文件

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

主要内容:

1)C++角度的输入和输出

2)iostream类系列

3)重定向

4)ostream类方法

5)格式化输出

6)istream类方法

7)流状态

8)文件I/O

9)使用ifstream类从文件输入

10)使用ofstream类输出到文件

11)使用fstream类进行文件输入和输出

12)命令行处理

13)二进制文件

14)随机文件訪问

15)内核格式化

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

1、使用cout进行输出

1)cout

cout << value;
//原型:ostream & operator<< (int)

2)其它ostream的方法:

put()方法 ——用于显示字符

原型:ostream & put(char);

cout.put('W'); //显示w字母,cout是调用方法的对象,put()是类成员
cout.put('i').put('t'); //拼接输出
//在原型合适的情况下,能够将数值型參数用于put(),让函数原型自己主动将參数转化为蒸汽的char值
cout.put(65); //将65转化为char,显示
cout.put(66.3); //将double值66.3转化为char值66。并显示对于字符

3)write()方法 ——用于显示字符串

原型:basic_ostream<char T, traits>& write(const char_type* s, streamsize n);

第一个參数提供了要显示的字符串地址。第二个參数指出要显示多少个字符

注意:write方法不会在遇到空字符时自己主动停止打印字符,而仅仅是打印指定数目的字符,即使超出了字符串的边界。

4)刷新输出缓冲区

控制符flush刷新缓冲区。而控制符endl刷新缓冲区,并插入一个换行符号

cout << 'Hello, good-looking! ' << flush;
cout << 'Wait just a moment,please. ' << endl;

控制符也是函数,能够直接用flush()来刷新cout缓冲区

flush(cout);
//或者cout << flush;

5)用cout进行格式化

ostream插入操作符将值转为为文本格式,在默认的情况下,格式化值的方式例如以下:

①对于char值,一个字符显示在宽度为一个字符的字段中

②对于数值整型,以十进制的方式显示在一个刚好容纳该数字以及负号的字段里

③字符串被显示在宽度等于该字符串长度的字段中

④浮点型有点变化

新式:浮点类型被显示为6位,末尾的0不显示。

老式:浮点类型被显示带6位小数,末尾的0也不显示

注意显示的位数和数字被存储的精度是没有关系的

⑤改动显示时使用的计数系统

十进制dec,cout默认十进制

十六进制hex控制符

cout << hex;
cout << n;

八进制oct控制符

cout << oct;
cout << n;

⑥调整字段的宽度width

int width();//返回字段宽度的当前设置
int width(int i);//将字段宽度设置为i个空格。并返回曾经的字段宽度值
cout.width(12);//记住是右对齐

这里须要注意:width()方法仅仅影响接下来显示的一个项目,之后字段宽度将恢复为默认值。比如

int w = cout.width(30);
cout << w;

注意这个时候显示字符串时候。字段宽度被设置为30,可是显示w的值时,字段宽度不是30,由于它影响的是接下来被现实的项目。所以显示为0

⑦填充字符

cout.fill('*');

注意这里与width不一样。它一直有效。

⑧设置浮点度的显示精度

C++默认的位数是6,末尾的0将不显示,precision()成员函数使可以选择其他值。

cout.precision(2);//将精度设置为2。新的精度设置也一直有效

注意:老式C++版本号将默认模式的精度解释为小数点后面的位置,新式指的是总位数

cout.precision(2);
20.4 -> 20
2.78889 -> 2.8

⑨打印末尾的0和小数点

cout.setf(ios_base::showpoint); //使得cout显示末尾的小数点,默认精度为6位置
20.04 -> 20.4000
cout.precision(2);
20.40 -> 20.
2.78889 -> 2.8

⑩setf()

控制了小数点被显示时,其它格式的选项

原型一、

fmtflags setf(fmtflags);
cout.setf(fmtflags);//程序中这样书写

格式常量fmtflags

ios_base::boolalpha //输入和输出bool,能够为true或false
ios_base::showbase //对于输出,使用C++基数前缀(0,0x)
ios_base::showpoint //显示末尾的小数点
ios_base::uppercase //对于16进制输出,使用大写字母E
ios_base::showpos //在正数前面加上+

原型二、

fmtflags set(fmtflags, fmtflags);

第一个參数是一个包括了所须要设置fmtflags值,第二个參数指出要清除第一參数的哪些位

setf(long, long)的參数:

第二个參数

ios_base::basefield

相应第一个參数有三个:ios_base::dec(基数10) ios_base::oct (基数8) ios_base::hex (基数16)

第二个參数

ios_base::floatfield

相应第一个參数有两个:ios_base::fixed(使用定点计数法)ios_base::scientific(使用科学计数法)

补充:C语言中printf()的说明符号,默认的C++模式相应于%g说明符,定点表示法相应于%f的说明符。而科学计数法相应于%e说明符

区分下,三个计数法的差别

默认模式:新式:浮点类型被显示为6位,精度指的是总位数,末尾的0不显示。

定点表示法、科学计数法:精度指的是小数点后面的位数,而不是总位数。显示末尾0

第二个參数

ios_base::adjustfield

对于第一个參数有三个: ios_base::left(左对齐) ios_base::right(右对齐)ios_base::internal (符号或基数前缀左对齐,值右对齐)

补充:

标准控制符

cout << showpoint << fixed << right;

iomanip头文件#include<iomanip>

最经常使用的3个控制符:

setprecision() 设置精度

setfill() 填充字符

setw() 字段宽度

2、使用cin进行输入

操作符函数原型

istream & operator>> (int &);
cin >> staff_size;

cin

1)输入一个数字

2)接受一个字符串,遇到空格、TAB、回车都结束

cin.get()

1)cin.get(ch)用来接收字符

char ch; cin.get(ch);

2)cin.get(s,n)用来接收一行字符串。能够接收空格 这个类似于getline 能够输入多个单词用空格隔开

char a[20]; cin.get(a,20);

cin.getline()

接受一个字符串,能够接收空格。这个和cin(s,n)都须要注意

char m[20] = jklkjilj;
cin.getline(m,5);
cout << m << endl; //这里输出结果为jklk 由于最后一个字符为‘0’

这就能够知道直接上cin.getline()有三个參数。接收字符串到m,接收个数,结束符(当省去的时候我们就默觉得'\0'或者‘/n’)

char a[20]; cin.getline(a,5);

getline()

接收一个字符串,能够接收空格并输出,须要包括头文件#include<string>

注意。getline()属于string流。所以仅仅有把字符串定义为string型,我们才干够用,否则仅仅能用istream流的cin.getline(m,20)

gets()

接收一个字符串,能够接收空格并输出,可是须要加上头文件#include<string>

并且须要注意不能写成m = gets();应该为gets(m)

getchar()

接收一个字符。须要有头文件#include<string>

这几须要注意,不能写成getchar(ch);应该写成ch = getchar(); getchar()是C语言的函数。C++也兼容。可是少用。

综上所述。依据我的习惯。C++以后碰到须要输入带空格的字符时用char ch; cin.get(ch)

字符串#include<string> gets(str)

补充:流是进出程序的字节流,缓冲区是内存中的暂时存储区域,是程序与文件或其它设备之间的桥梁

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<完结于2014.07.24 23:08


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

《C++ Primer Plus》学习笔记11的更多相关文章

  1. Ext.Net学习笔记11:Ext.Net GridPanel的用法

    Ext.Net学习笔记11:Ext.Net GridPanel的用法 GridPanel是用来显示数据的表格,与ASP.NET中的GridView类似. GridPanel用法 直接看代码: < ...

  2. SQL反模式学习笔记11 限定列的有效值

    目标:限定列的有效值,将一列的有效字段值约束在一个固定的集合中.类似于数据字典. 反模式:在列定义上指定可选值 1. 对某一列定义一个检查约束项,这个约束不允许往列中插入或者更新任何会导致约束失败的值 ...

  3. golang学习笔记11 golang要用jetbrain的golang这个IDE工具开发才好

    golang学习笔记11   golang要用jetbrain的golang这个IDE工具开发才好  jetbrain家的全套ide都很好用,一定要dark背景风格才装B   从File-->s ...

  4. Spring MVC 学习笔记11 —— 后端返回json格式数据

    Spring MVC 学习笔记11 -- 后端返回json格式数据 我们常常听说json数据,首先,什么是json数据,总结起来,有以下几点: 1. JSON的全称是"JavaScript ...

  5. Python3+Selenium3+webdriver学习笔记11(cookie处理)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记11(cookie处理)'''from selenium im ...

  6. 并发编程学习笔记(11)----FutureTask的使用及实现

    1. Future的使用 Future模式解决的问题是.在实际的运用场景中,可能某一个任务执行起来非常耗时,如果我们线程一直等着该任务执行完成再去执行其他的代码,就会损耗很大的性能,而Future接口 ...

  7. SpringMVC:学习笔记(11)——依赖注入与@Autowired

    SpringMVC:学习笔记(11)——依赖注入与@Autowired 使用@Autowired 从Spring2.5开始,它引入了一种全新的依赖注入方式,即通过@Autowired注解.这个注解允许 ...

  8. Spring 源码学习笔记11——Spring事务

    Spring 源码学习笔记11--Spring事务 Spring事务是基于Spring Aop的扩展 AOP的知识参见<Spring 源码学习笔记10--Spring AOP> 图片参考了 ...

  9. C Primer Plus 学习笔记 -- 前六章

    记录自己学习C Primer Plus的学习笔记 第一章 C语言高效在于C语言通常是汇编语言才具有的微调控能力设计的一系列内部指令 C不是面向对象编程 编译器把源代码转化成中间代码,链接器把中间代码和 ...

随机推荐

  1. JavaScript对象的创建

    原文 简书原文:https://www.jianshu.com/p/6cb1e7b7e379 大纲 前言 1.简单方式创建对象的方法 2.工厂模式创建对象 3.构造函数模式创建对象 4.原型模式创建对 ...

  2. C++学习笔记8-操作符&amp;指针

    1.  重载操作符 赋值操作符的返回类型应该与内置类型赋值运算返回的类型同样.内置类型的赋值运算返回对右操作数的引用,因此,赋值操作符也返回对同一类类型的引用.比如.Sales_item的赋值操作符能 ...

  3. iOS开发Quartz2D之 七:雪花效果

    #import "VCView.h" @implementation VCView -(void)awakeFromNib { //[NSTimer scheduledTimerW ...

  4. solr源码导入eclipse 分类: H4_SOLR/LUCENCE 2014-07-14 14:11 550人阅读 评论(1) 收藏

    转载自:http://blog.csdn.net/vltic/article/details/19917377 (1)相应的开发环境准备          (1)jdk1.6+的安装和环境变量配置(命 ...

  5. 利用函数的惰性载入提高 javascript 代码性能

    在 javascript 代码中,因为各浏览器之间的行为的差异,我们经常会在函数中包含了大量的 if 语句,以检查浏览器特性,解决不同浏览器的兼容问题.例如,我们最常见的为 dom 节点添加事件的函数 ...

  6. html中的span有value属性么(可以作为自定义属性在jquery中用)

    html中的span有value属性么(可以作为自定义属性在jquery中用) 一.总结 可以作为自定义属性在jquery中用 二.html中的span有value属性么 value并不是span标签 ...

  7. [Docker] Container & image (docker run)

    image: stopped container Run a container: docker run -d --name web -p : nigelpoulton/pluralsight-doc ...

  8. 机器学习: Softmax Classifier (三个隐含层)

    程序实现 softmax classifier, 含有三个隐含层的情况.activation function 是 ReLU : f(x)=max(0,x) f1=w1x+b1 h1=max(0,f1 ...

  9. 【转】关于python中带下划线的变量和函数 的意义

    http://www.blogjava.net/lincode/archive/2011/02/02/343859.html 总结: 变量: 1.  前带_的变量:  标明是一个私有变量, 只用于标明 ...

  10. PatentTips - Heterogeneous Parallel Primitives Programming Model

    BACKGROUND 1. Field of the Invention The present invention relates generally to a programming model ...