C++的IO(输入输出)专题
C语言项目式教程项目二 使用输入输出函数实现系统主界面--输入输出

输入:A
输出:A
输入输出
格式输出函数printf()
printf函数称为格式输出函数,其关键字最末一个字母f即为“格式 ”(format)之意。其功能是按用户指定的格式,把指定的数据输出到显示 器屏幕上。 printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。 但作为一个特例,printf函数因使用广泛,stdio.h头文件包含可省略。 printf函数的一般形式为: standard input&outupt 以%开头的,后面跟 printf(“格式控制字符串”, 输出表列) 有各种格式字符
输入输出
任务诠释
编写程序,输入三个小写字母,输出其对应的大写字母。 #include <stdio.h> int main() { char a,b,c; printf("input character a,b,c\n"); scanf("%c %c %c",&a,&b,&c); printf("%c,%c,%c\n",a-32,b-32,c-32); return 0; }
C语言程序设计
输 入 输 出
输入输出
任务场景 老师给初学C程序设计的小芳布置了一项任务:
要求她从键盘输入3个小写英文字母,计算机自动从屏幕上输出对应的 大写字母。
小芳该怎么做呢?聪明的你 能帮助她完成任务吗?
输入输出
任务分析
小芳今天的任务其实并不难,只需要掌握在C程序中不同数据类 型的输入输出方式,就能轻松地完成任务啦!
以%f或%e中较短的输出宽度输出单、双精度实 数 输出单个字符 输出字符串
输入输出
C输入输出(printf()用于格式化输出到屏幕)

C输入输出(printf()用于格式化输出到屏幕)(printf() 用于格式化输出到屏幕)/group/6764960036255957507/?app=news_article×ta mp=1575115009&req_id=20191130195649010129027020153C 5D31&group_id=6764960036255957507当我们提到输入时,这意味着要向程序填充一些数据。
输入可以是以文件的形式或从命令行中进行。
C 语言提供了一系列内置的函数来读取给定的输入,并根据需要填充到程序中。
当我们提到输出时,这意味着要在屏幕上、打印机上或任意文件中显示一些数据。
C 语言提供了一系列内置的函数来输出数据到计算机屏幕上和保存数据到文本文件或二进制文件中。
标准文件C 语言把所有的设备都当作文件。
所以设备(比如显示器)被处理的方式与文件相同。
以下三个文件会在程序执行时自动打开,以便访问键盘和屏幕。
标准文件文件指针设备标准输入 stdin 键盘标准输出 stdout 屏幕标准错误 stderr 您的屏幕文件指针是访问文件的方式,本节将讲解如何从屏幕读取值以及如何把结果输出到屏幕上。
C 语言中的 I/O (输入/输出) 通常使用 printf() 和 scanf() 两个函数。
scanf() 函数用于从标准输入(键盘)读取并格式化,printf() 函数发送格式化输出到标准输出(屏幕)。
实例#include // 执行 printf() 函数需要该库int main(){printf('菜鸟教程'); //显示引号中的内容return 0;}编译以上程序,输出结果为:菜鸟教程实例解析:所有的 C 语言程序都需要包含 main() 函数。
代码从 main() 函数开始执行。
printf() 用于格式化输出到屏幕。
printf() 函数在 'stdio.h' 头文件中声明。
C语言IO--printf右对齐补零

C语言IO--printf右对齐补零关于printf的一点总结,内容来自/s/blog_5ac88b350100auna.html 1.1 标准输入输出函数1.1.1 格式化输入输出函数Turbo C2.0 标准库提供了两个控制台格式化输入、输出函数printf( ) 和scanf(), 这两个函数可以在标准输入输出设备上以各种不同的格式读写数据。
printf()函数用来向标准输出设备(屏幕)写数据; scanf() 函数用来从标准输入设备(键盘)上读数据。
下面详细介绍这两个函数的用法。
一、printf()函数printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。
在编写程序时经常会用到此函数。
printf()函数的调用格式为:printf("<格式化字符串>", <参量表>);其中格式化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出; 另一部分是格式化规定字符, 以"%"开始, 后跟一个或几个规定字符,用来确定输出内容格式。
参量表是需要输出的一系列参数, 其个数必须与格式化字符串所说明的输出参数个数一样多, 各参数之间用","分开, 且顺序一一对应, 否则将会出现意想不到的错误。
1. 格式化规定符Turbo C2.0提供的格式化规定符如下:━━━━━━━━━━━━━━━━━━━━━━━━━━符号作用──────────────────────────%d 十进制有符号整数%u 十进制无符号整数%f 浮点数%s 字符串%c 单个字符%p 指针的值%e 指数形式的浮点数%x, %X 无符号以十六进制表示的整数%0 无符号以八进制表示的整数%g 自动选择合适的表示法━━━━━━━━━━━━━━━━━━━━━━━━━━说明:(1). 可以在"%"和字母之间插进数字表示最大场宽。
C语言IO操作

标准输⼊流0STDIN_FILENO stdin 标准输出流1STDOUT_FILENO stdout 标准错误流2STDERR_FILENO stderr C语⾔IO操作⽂件的概念和类型 概念:⼀组相关数据的有序集合 ⽂件类型:1. 常规⽂件 r2. ⽬录⽂件 d3. 字符设备⽂件 c4. 块设备⽂件 b5. 管道⽂件 p, 进程间通信的机制6. 套接字⽂件 s, 进程间通信的机制7. 符号链接⽂件 l如何理解标准IO 标准IO由ANSIC标准定义,就是⽤标准C语⾔定义好的⼀组⽤来输⼊和输出的API 主流操作系统(Linux,Windows)上都实现了C库 标准IO通过缓冲机制减少系统调⽤,实现更⾼的效率流(FILE)的含义 标准IO⽤⼀个结构体数据类型来存放打开的⽂件的相关信息 标准IO的所有操作都围绕FILE来进⾏ FILE⼜被称为流(stream) 流分为两种流分别是 ⽂本流:Windows系统中⽂本流的换⾏符占⽤两个字节⽤“\r\n”表⽰,LInux中⽤‘\n’表⽰ ⼆进制流:Windows系统⼆进制流的换⾏符占⽤⼀个字节⽤“\n”表⽰,LInux中⽤‘\n’表⽰流的缓冲 全缓冲:当流的缓冲区⽆数据或⽆空间时才执⾏实际IO操作 ⾏缓冲:当在输⼊和输出中遇到换⾏符“\n”时,进⾏IO操作;当流和⼀个终端关联时,是典型的⾏缓冲 ⽆缓冲:数据直接写⼊⽂件,流不进⾏缓冲,⼀般在打印错误信息时使⽤ 标准IO预定义3个流,程序运⾏时⾃动打开流的打开 下列函数可⽤于打开⼀个标准IO流 FILE *fopen(const char *path, const char *modle); 成功时返回流指针;出错时返回NULL model参数模式描述r或rb打开⼀个已有的⽂本⽂件,允许读取⽂件。
w或wb 打开⼀个⽂本⽂件,允许写⼊⽂件。
如果⽂件不存在,则会创建⼀个新⽂件。
在这⾥,您的程序会从⽂件的开头写⼊内容。
C语言输入输专项训练(已保存截图)

C 语言实训教程----输入输出专项练习一、实验目的1.能够熟练并正确定义、输入、输出并使用常用数据类型:整型、实型、字符型2.能够使用scanf(),printf(),getchar(),putchar(),gets(),puts()进行各种数据正确格式的输入输出二、实验内容及实验步骤(一) 验证性试验,验证以下实验,并分析实验结果1.用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=ˊAˊ,c2=ˊaˊ,问在键盘上如何输入数据?#include<stdio.h>intmain(){ inta,b; flaotx,y; charc1,c2;scanf(“a=%db=%d”,&,&b);scanf(“%f%e”,&x&y);scanf(“%c%c”,&c1,&c2);printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2);return 0;}运行时分别按以下方式输入数据,观察输出结果,分析原因。①a=3,b=7,x=8.5,y=71.82,A,a↙②a=3 b=7 x=8.5 y=71.82 A a↙③a=3 b=7 8.5 71.82 A a↙④a=3 b=7 8.5 71.82Aa↙⑤ 3 7 8.5 71.82Aa↙⑥a=3 b=7↙8.571.82↙A↙ a↙⑦a=3 b=7↙8.5 71.82↙Aa↙⑧a=3 b=7↙8.5 71.82Aa↙2.字符输入#include<stdio.h>main(){ int a;char b; floatc;printf("Please input an integer:");scanf("%d", &a); printf("integer: %d\n",a); printf("Please input a character:");scanf("%c", &b);printf("character: %c\n", b);printf("Please input a float number:");scanf("%f", &c); printf("float: %f\n", c);}如果把scanf("%c", &b);改为scanf("%1s", &b);观察运行结果3.验证格式输入#include <stdio.h>void main(){int a, b;p rintf("Please input a and b:"); scanf("%2d%*2d%2d",&a, &b);printf("a=%d, b=%d, a+b=%d\n",a,b,a+b);}(1)输入123456,验证上述实验结果(2)输入12345a4.格式输入与输出#include <stdio.h>main() { int a=-1;printf ("%d,%o, %x",a,a, a);printf("%8o, %12x",a, a);}5.无符号数据的输出#include<stdio.h>void main() {unsigned int a=65535;int b=-2;printf(“a=%d,%o,%x,%u\n”,a,a,a,a);printf(“b=%d,%o,%x,%u\n”,b,b,b,b);}6.字符串的输出#include<stdio.h> voidmain(){printf(“%3s,%7.2s,%.4s,%-5.3s\n”, “CHINA”, “CHINA”, “CHINA”,“CHINA”);}7.输出实数时的有效位数#include <stdio.h>void main(){ floatx,y;x=111111.111;y=222222.222;prinft(“%f”,x+y);}8.输出双精度数时的有效位数#include <stdio.h> void main(){double x,y;x=1111111111111.111111111;y=2222222222222.222222222;printf(“%f”,x+y);}9.输出实数时指定小数位数#include <stdio.h>void main(){float f=123.456;printf(“%f%10f%10.2f%.2f%-10.2f\n”,f,f,f,f,f);}10.字符输出#include<stdio.h>intmain(void) { int c;for ( ; ; ) { c= getchar(); if(c == EOF)break;if ((c >= ’a’) && (c <= ’z’))c += ’A’ - ’a’; putchar(c); }return 0;}(1)对比下列五种代码,将4-7、10 行代码替换如下,程序应该如何修改才能保持输出结果相同?for (c=getchar(); c!=EOF; c=getchar()) putchar(c);(2)将4-7、10 行代码替换如下,程序应该如何修改才能保持输出结果相同?while ((c=getchar())!=EOF) putchar(c);(3)将4-7、10 行代码替换如下,程序应该如何修改才能保持输出结果相同?c = getchar(); while(c!=EOF)(4)如果用ASCII 码修改if ((c >= ’a’) && (c <= ’z’));c += ’A’ - ’a’;这两句代码,应该如何修改?(5) 利用ctype函数修改上面代码,验证程序结果#include <stdio.h>#include<ctype.h>intmain(void) { int c;for ( ; ; ) { c =getchar(); if (c ==EOF) break; if(islower(c)) c =toupper(c);putchar(c); } return0;}11.转义符输出,并解释为什么是这样的输出结果#include <stdio.h>void main ( ){printf("a\nb\tc\bd\fef");转义符作用12.字符串输入输出,连续输入三个单词,每个单词以空格分隔#include <stdio.h>void main ( ){char str1[5],str2[5],str3[5]; scanf(”%s%s%s”,str1,str2,str3);printf("%s %s %s", str1,str2,str3);}(二)编程题1.编写printf函数调用下列格式来显示float型变量x:a)指数表示形式: 最小为8的字段宽度内左对齐; 小数点后保留1位数字.b)指数表示形式: 最小为10的字段宽度内右对齐; 小数点后保留6位数字c)定点十进制表示形式: 最小为8的字段宽度内左对齐; 小数点后保留3位数字d)定点十进制表示形式: 最小为6的字段宽度内右对齐; 小数点后无数字.}2.设计程序使得用户可以以任意字符(回车、空格、制表符、逗号、其它)作为分隔符进行数据的输入}输入日期的形式为月/日/年(mm/dd/yy), 输出日期的形式为年月日(yymmdd)}4.有3个字符串,要求找出其中最大者5.编写一个程序, 对用户录入的产品信息进行格式化, 程序运行后需要有以下会话:Enter item number: 583Enter unit price: 13.5Enter purchase date(mm/dd/yy): 10/24/95Item Unit Price Purchase Date583 $ 13.50 10/24/95其中, 数字项和日期项左对齐, 单位价格右对齐, 美元数量最大取值为9999.99}6.计算若干整数的值,要求输入有若干行,每行第一个整数n,代表后面还有n个数据,如果n=0代表输入结束。输出:要求对于每一行都要在相应的行输出和。。
c语言各类型 输入输出

C语言是一种广泛使用的编程语言,它具有强大的输入输出功能。
在C语言中,我们可以使用不同的数据类型来处理各种输入和输出操作。
本文将详细介绍C语言中各种类型的输入输出方法,并提供一些具体的示例。
首先,我们来谈谈C语言中的基本输入输出函数。
标准库函数printf用于输出数据到屏幕上。
它可以打印各种数据类型的值,如整数、浮点数、字符等。
下面是一个示例:#include<stdio.h>int main() {int num = 10;printf("The value of num is %d\n", num);return0;}上述代码中,我们使用printf函数将变量num的值输出到屏幕上。
%d是一个格式说明符,用于指定输出的数据类型为整数。
通过这种方式,我们可以将任何类型的数据输出到屏幕上。
除了printf函数,C语言还提供了scanf函数用于从键盘上接收输入。
scanf函数可以读取各种数据类型的值,如整数、浮点数、字符等。
下面是一个示例:#include<stdio.h>int main() {int num;printf("Enter a number: ");scanf("%d", &num);printf("You entered: %d\n", num);return0;}在上述代码中,我们使用scanf函数从键盘上接收一个整数,并将其存储在变量num中。
%d是一个格式说明符,用于指定输入的数据类型为整数。
需要注意的是,在scanf函数中,我们需要使用&操作符来获取变量的地址。
除了基本的输入输出函数,C语言还提供了一些其他的输入输出函数,用于处理特定类型的数据。
例如,getchar函数用于接收单个字符的输入,puts函数用于输出字符串。
下面是一个示例:#include<stdio.h>int main() {char ch;printf("Enter a character: ");ch = getchar();printf("You entered: ");putchar(ch);printf("\n");return0;}在上述代码中,我们使用getchar函数接收一个字符的输入,并将其存储在变量ch中。
计算机组成原理——输入输出(IO)系统考研题

计算机组成原理——输⼊输出(IO)系统考研题(⼀) I/O系统基本概念(⼆)外部设备1. 输⼊设备:键盘、⿏标2. 输出设备:显⽰器、打印机3. 外存储器:硬盘存储器、磁盘阵列、光盘存储器(三) I/O接⼝(I/O控制器)1. I/O接⼝的功能和基本结构2. I/O端⼝及其编址3.I/O地址空间及其编码(四) I/O⽅式1. 程序查询⽅式2. 程序中断⽅式中断的基本概念;中断响应过程;中断处理过程;多重中断和中断屏蔽的概念。
3. DMA⽅式DMA控制器的组成;DMA传送过程。
4. 通道⽅式(2009)22. 下列选项中,能引起外部中断的事件是A. 键盘输⼊B. 除数为0C. 浮点运算下溢出D. 访存缺页答案:A考点:内部中断和外部中断的区别外中断:I/O设备等来⾃主机外部设备的中断。
内中断:CPU内部的异常、例外、陷⼊内中断(2010)21、单级中断系统中,中断服务程序执⾏顺序是()I保护现场II开中断III关中断IV保存断点V中断事件处理VI恢复现场VII中断返回A、I->V->VI->II->VIIB、III->I->V->VIIC、III->IV->V->VI->VIID、IV->I->V->VI->VII答案:A考点:单级中断的概念该题的⼀个特点是单级中断,不会出现多重中断的中断嵌套问题,由于是单级中断,断点也不需要保存了,CPU直接返回中断前的位置就可以了!同时关中断是由硬件⾃动实现的,并不属于中断服务程序。
⽽恢复断点、恢复现场之后需要开中断才能返回断点这⾥给出⼀般的中断处理的过程:22、假定⼀台计算机的显⽰存储器⽤DRAM芯⽚实现,若要求显⽰分辨率为1600*1200,颜⾊深度为24位,帧频为85HZ,现实总带宽的50%⽤来刷新屏幕,则需要的显存总带宽⾄少约为( )A、245MbpB、979MbpsC、1958MbpsD、7834Mbps答案:D考点:1600*1200*24*85/0.51M约为106(2010)21.某计算机有五级中断L4 ~ L0,中断屏蔽字为M4M3M2M1M0,Mi=1(0≤i≤4)表⽰对Li级中断进⾏屏蔽。
C+程序设计第10章 输入输出

本章将介绍C+程序设计中的输入输出操作。了解如何进行输入与赋值,以及 输出与显示。学习格式化输入输出和标准输入输出的使用方法。最后,通过 案例分析来巩固所学知识。
输入与赋值
1
键盘输入
通过键盘接收用户输入的数据。
赋值运算符
2
将一个值赋给变量,使得变量具有该
值。
3
数据类型转换
1
标准输入
从键盘接收用户输入的数据。
2
标准输出
将数据输出到屏幕上。
3
文件输入输出
使用文件流进行输入输出操作。
文件读写
1 打开文件
打开一个文件以进行读 取或写入操作。
2 读取文件内容
读取文件中的数据并进 行相应的处理。
3 写入文件内容
向文件中写入数据并保 存。
案例分析
数据统计
通过输入和输出操作,进行数 据分析和统计。
文件处理
读取文件数据并进行相应的处 理和操作。
可视化呈现
将数据以图表等形式进行可视 化呈现。
将一个数据类型的值转变为另一个数 据类型的序运行结果。
输出格式控制
控制输出结果的显示格式,如小数点位数、对齐方式等。
字符串输出
输出字符串变量的值。
格式化输入输出
格式化输出
使用格式转换说明符控制输出结果的格式。
格式化输入
使用格式转换说明符接收特定格式的输入。
标准输入输出
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第19章I/O系统一、基本概念1、流:c++把输入输出看着字节流。
输入时,程序从输入流中提取字节,输出时,程序将字节插入到输出流中。
输入流中的字节可能来自键盘,也可能来自存储设务或其他程序。
同样,输出流中的字节可以流向屏幕,打印机,存储设备或其他程序。
2、C++使用文件iostream中的类和对象来管理流和缓冲区。
iostream文件中的类的关系如下图。
C++中的输入输出类3、>>提取和<<插入操作符:在C++中重载了这两个符号,>>提取操作符从输入流中读取基本类型的数据,<<插入操作符将基本类型的类据输出到输出流中。
比如cin>>a;即表示从标准流cin中读取了一个变量。
再如cout<<a;把变量a 的值输出到流cout中,以便以后输出到显示屏。
如果要把内容输入输出到其他地方比如文件中,就需要创建另外的流类对象,再使用插入或提取操作符进行输出或输入。
在C++中cin关联的是标准输入控制台,一般是键盘,而cout 是关联的标准输出控制台,一般是显示屏。
4、怎样理解>>和<<:记住,这两个符号的尖角对着的方向表示内容要到达的地方,比如cin>>a表示把左边的内容输入到右边,而cout<<a;则表示把右边的内容输入到左边。
二、基本输出5、基本输出流:a、cout流:在前面的例子中我们使用了很多利用cout进行输出的例子。
cout是ostream类的对象。
cout与<<运算符组成了输出操作,其中<<表示把<<符号右边的内容输出到流对象cout中。
b、cerr流:该流与标准错误流相对应,可用来显示错误消息,通常与标准输出设备相关联(通常为显示器)。
这个流不会被缓冲。
c、clog流:该流与cerr一样,只不过该流会被缓冲。
6、使用ostream类中的put方法:p ut是osteam类中的方法,当使用他时需通过对象来调用,一般通过cout对象来调用,比如cout.put(‘a’);put方法用于输出一个字符,可以对put方法进行拼接输出,比如cout.put(‘a’).put(‘b’);put 方法的反回类型为调用该对象的一个引用,也就是说cout.put()反回的是cout对象的引用,这就意味着put方法可以和<<操作符混用,比如cout.put(‘a)<<endl;将是合法的。
7、使用ostream类中的write方法:write方法和put一样,只不过write是输出一个字符串,但要注意的是write方法有两个参数,第一个参数是指向字符串的指针,第二个参数是要显示的字符的数目,也就是说在调用write方法时要两个参数,比如cout.write(“hy”,2)。
还要注意的是write不会在遇到空白字符时就停止输出,而是输出参数中指定的字符数,即使字符只有两个也是如此,比如cout.write(“hy”,4)将显示4个字符,最后两上可能是2个空格也可能是一串乱码。
而cout.write(“hy”,1)则只显示一个字符。
write方法也可以像put方法一样拼接,比如cout.write(“hy1”,3).write(“hy2”,3)<<endl;8、刷新缓冲区:a、一般cout对象输出内容时,将对输出的内容进行缓冲,当缓冲区的内容满了后再输出缓冲区中的内容并清空缓冲区。
通常缓冲区的大小为512字节或其整数倍,当标准输出是硬盘上的文件时,缓冲可节省大量的时间,毕竟程序不希望为发送512个字节而读取512次。
不过对屏幕而言就没必要填满缓冲区再输出,毕竟不会为了输出“hyong”这样的字符而使用512字节来填满缓冲区。
b、一般程序会在输入即将发生时刷新缓冲区,比如cout<<”hy”; int a; cin>>a;如果程序不刷新缓冲区则不会显示字符串hy,相反如果刷新的话就会显示字符串hy再提示输出内容。
一般程序会在输入时刷新缓冲区。
c、当然也可以手动刷新缓冲区。
手动刷新可以使用flush和endl控制符,其中endl刷新缓冲区并换行,而flush则只刷新缓冲区,比如cout<<”hy”<<endl;或cout<<”hy”<<flush;三、控制输出时的格式9、可以使用4种形式来设置输出时的格式:1、使用标准控制符,2、使用IO流类的成员函数,3、使用iomanip头文件中的控制符。
4、使用标记进行格式设置的setf()成员函数。
4种形式的格式化输出具体内容如下10、使用标准控制符进行格式化输出:通过使用控制符可以控制显示时的格式。
比如cout<<hex;将以16进制方式显示整数,注意控制符不是一个成员函数,不可以通过流的对象来调用,即cout.hex()是错误的,虽然制制符不是成员函数,但C++对>>运算符进行了重载,使得程序可以这样使用控制符hex(cout)或cout<<hex;11、应用控制符之后的内容将一直按照该格式输出,除非重新对格式进行设置。
12、常用的控制符控制符含义控制符含义dec以十进制显示(no)uppercase对16进制的字符和基数前缀(不)显示大写。
oct以八进制显示(no)boolalpha把true或false表示成字符或数字1,0hex以16进制显示(no)showpoint(不)显示小数点(no)sohowpos(不)显示正数前的+(no)showbase显示(不显示)进制的前缀基数,8进制以0始,16进制以0x开始left左对齐或填充字符加到数值的右边fixed以小数点的形式表示浮点数right右对齐或填充字符加到数值的左边scientific以科学计数法表示浮点数endl刷新输出缓冲区,并插入一个换行符(no)skipws(不)跳过输入中的空白flush刷新输出缓冲区,注意,这里不插入换行符13、使用IO流类的成员函数进行格式化输出13.1、调整字段宽度的函数int width():a、控制符int width()将用来调整字段的宽度,因为width是成员函数,所以要通过对象来调用,比如cout.width()将显示当前的字段宽度,默认为0,而cout.width(3)将把字段宽度设定为3。
注意C++容纳字段的方式为给字段分配刚好合适的宽度来容纳字段,所以C++中默认的字段宽度为0,以适合于所有的字段。
b、width的默认对齐方式为右对齐,即如果cout.width(12)如果字段没有这么宽,则将在字段的左边填以空格来达到12个字段的宽度。
c、还要注意的是width只影响他设置后的下一个输出,再下一个字段输出后,后继的字段被恢复为默认值,比如cout.width(12); cout<<2<<3;则输出2时会以12字段的宽度显示,但显示3时就会以默认的方式显示了。
d、int width()调用他时将会反回上一次的字段宽度的值。
13.2、填充字符:成员函数fill()可以用来改变填充的字符,比如cout.fill(‘*’),使用*填充空白部分。
fill函数在设置后将一直有效,除非被重新设定。
13.3、设置浮点数的显示精度:成员函数precision()用于设置浮点数的显示精度,比如cout.precision(4)将浮点数的精度设置为4位。
这里的精度指的是显示的总位数,在定点模式和科学模式下指的是小数点后的位数。
默认的精度为6,也就是说cout<<1.234567将无法显示完整,即精度超过了6位。
注意precision函数和width函数不同,precision函数在设置精度后将一直有效,除非被重新设定。
14、使用iomanip头文件中的控制符进行格式输出,需要包含头文件iomanip,这些控制符和标准控制符一样,需要插入到流中使用。
iomanip中的控制符和标准控制符不同的是,这些控制符需要参数。
14.1、设置字符宽度的setw()控制符:比如cout<<setw(12)<<c;设置字段的宽度为12,该控制符只在下一次输出时有效,再一下次输出时系统将还原为默认的宽度。
14.2、设置填充字符的setfill()控制符:比如cout<<setw(12)<<setfill(‘*’)<<c;把空白字符用符号*来填充,该控制符一直保持有效,直到被重新设置。
14.3、设置浮点数的显示精度setprecision()控制符:比如cout<<setprecision(3)<<c;将浮点数的显示精度设为3。
15、使用标记进行格式设置的setf()函数:在C++中有一个受保护的数据成员,其中的各位分别控制着格式化的各个方面,要使用各种格式只需把该位设置为1即可,setf函数就是用来设置标记的成员函数,使用该函数需要一个或两个在c++中定义的位的常量值作为参数,这些位的常量值在下面介绍。
15.1、c++在ios类中定义了位的常量值,这些值如下:a、ios::boolalpha使布尔值用字符表示,iso::showbase显示进制的基数表示即16进位以0x开始,8进制以0开始,b、ios::showpoint显示末尾的小数点,c、ios::uppercase使16进制的a~f用大写表示,同时0x还有科学计数的字母e都用大写表示,d、ios::showpos在十进制的正数前面显示符号+。
e、注意这些常量都是ios类中定义的,所以使用他们时需要加上ios::限定符。
比如cout.setf(ios::showbase);注意使用setf函数时需要用对象来调用,因为他是流类的成员函数。
15.2、使用带两个参数的setf()函数:setf()函数不但可以带有一个参数,还可以带有两个参数。
带两个参数的setf()函数的第一个参数为要设置的位的值,第二个参数为要清除的位的值。
比如第3位被设为1表示10进制输出,第4位为1表示8进制输出,第5位设为1则表示16进制输出。
假设当前输出以10进制为基数,现在要改为16进制为基数输出,这时就需要将第5位设为1,而第3位应被清除为0。
当然这样使用比较复杂,实际上使用时可以用在c++中定义的ios常量值来设置第1参数和第2参数,setf()函数的第一和第二参数见下表setf()函数的第一和第二参数第一个参数第二个参数说明ios::dec ios::oct ios::hex ios::basefield比如:cout.setf(ios::hex, ios::basefield);表示把16进制位设为1,而dec和oct位设为0,最后以16进制输出ios::fixed ios::scientific ios::floatfield比如:cout.setf(ios::scientific,ios::floatfield);表示把科学计数表示浮点数的位设为1,而把以浮点数表示的设为0。