简单I/O操作
在程序中经常需要将数据输出到屏幕、打印机、存储器等。也经常需要从键盘接受用户输入的数据,这种输入输出操作统称为I/O操作。在这里将简单介绍键盘和屏幕操作。
在C++中把数据的I/O称为数据流,并提供了强大的“流”处理功能,以控制数据从一个位置流向另外一个位置。相对于内存,当数据从内存流向屏幕、打印机或硬盘时称为输出;当数据从键盘、硬盘流向内存时称为输入。C++用两个对象cin和cout实现标准的输入输出。cin:它是istream类的对象,用来处理标准输入,即键盘输入。
cout:它是ostream类的对象,用来处理标准输出,即屏幕输出。
在C++中用istream类和ostream类的派生类iostream控制输入输出,并提供了输入和输出操作符。>称为抽取操作符,其作用是从cin流中提取字符。
在此简单介绍一下屏幕的输入输出方法。
1、使用提取符实现键盘输入
格式如下:
cin    >>    >> ...;
这里抽取符可连续使用,后跟表达式,表达式通常是获得输入值的变量或对象。例如:int  a,b;
cin >>a >>b;
要求从键盘上输入两个int型数。在键盘上输入
43    20
这时,变量a获取值为43,变量b获取值20。
说明:从键盘上输入数值时两个值之间一般用空格分隔,也可以用tab键或换行符。
2、使用插入操作符和cout实现屏幕输出
格式如下:
cout  ...;
与>>一样,插入操作符可连续使用,后跟表达式,在输出时系统自动计算表达式的值并插入到数据流中。例如:
cout    are you !"
看下面例子:
#include
#include
void  main( )
{
cout    of  \"this is a string\"  is :\t"
cout    \"this is a string\" is :\t"
}
执行该程序输出如下结果:
The length  of  "this is a string"  is : 16
The size  of  "this is a string"  is : 17
3、控制输出格式
许多情况下,都需要控制输出结果的表现形式。如输出宽度、输出精度、输出格式等。C++的iomanip.h中定义了许多控制符,这些控制符可以直接插入到流中,控制数据的输出格式。控制符有两种:控制常量和控制函数,控制常量定义在iostream.h中,控制函数定义在
iomanip.h中。常用控制符见下表。
控制符
描述
备注
dec
hex
oct
按10进制输出
按16进制输出
按8进制输出
常量控制符
在iostream.h中
setfill(c)
setprecision(n)
setw(n)
setiosflags(ios::fixed)
setiosflags(ios::scientific)
setiosflags(ios::left)
setiosflags(ios::right)
setiosflags(ios::skipws)
setiosflags(ios::uppercase)
setiosflags(ios::lowercase)
设填充字符为c
设置显示小数精度为n位
设域宽为n个子符
小数方式表示
指数表示
左对齐
右对齐
忽略前导空白(用于输入)
16进制数大写输出
16进制数小写输出
函数控制符
在iomainip.h中
注意:除了setw(n)控制符之外,其他控制符对后面的所有输出起控制作用,直到改变输出格式为止。
例1、输出8进制和16进制数
常量dec、hex和oct用来控制必须按10进制、16进制或8进制形式输出。
#include
void  main( )
{
int  number=1234;
cout
}
结果为:
Decimal:1234
Hexadecimal:4d2  173c44
Octal:2322  5636104
注意:由于这三个标识符已经被定义为系统常量,注意不能在定义为其他变量使用。
例2、设置值的输出宽度
函数setw(n)用来控制输出宽度,如果数据实际宽度大于设置宽度,将按实际宽读输出;如果设置宽度大于实际输出宽度,数据输出时将在前面补相应数量的空格。另外,该控制符只对一次输出起作用。
#include
#include
void  main( )
{
int  number=1234;
cout
}
输出结果为:
1234_ _  _1522756
例3、设置填充字符
setfill(c)函数用来设置填充的字符,默认情况下为空格。
#include
#include
void  main( )
{
int  number=1234;
cout
}
输出$$1234$1522756
例4、设置对齐格式
函数setiosflags(ios::left)和setiosflags(ios::right)用来控制输出左右对齐格式。当数据实际宽度小于输出宽度时该控制才起作用。默认情况下数据输出是右对齐。
#include
#include
void  main( )
{
int  number=1234;
cout
}
输出1234$$1522756$
例5、控制浮点数显示
函数setprecision(n)可用来控制输出流显示浮点数的数字个数(整数部分加小数部分)。c++默认的流输出数值的有效位是6。当小数截短显示时,进行四舍五入处理。
函数setflags(ios::fixed)用来控制符点数是按纯小数方式显示,函数setflags(ios::scientific)用来控制符点数是按科学记数法方式显示。系统默认为纯小数方式输出。
函数setiosflags(ios::showpoint) 用来强制显示小数点和符号。
#include
#include
void main( )
{
float    x=20.0/7; y=18.0/6;
cout
cout
cout
cout
cout
cout
cout
}
输出结果为:
2.85714          (默认6位,整数部分加小数部分)
2.857143e+000        (默认6位,指小数部分)
2.857142857142857e+000    (double型最多15位)
2.85714285714286    (double型有效位最多15位,整数部分加小数部分)
3              ( 无小数位)
3              (默认0不输出)
3.00000          (强制输出0)
2.8 标准输入输出函数printf与scanf
在程序设计中输入输出是不可缺少的内容,因此在C语言中提供了printf与scanf标准函数来满足输入输出要求。需要说明的是,在C++中提供了更方便的输入输出控制,这就是I/O 流。但为了满足一些对printf与scanf使用习惯的要求,C++中仍保留了这两个函数。
一、printf函数
格式:
printf (格式控制字符串,输出项1,输出项2,…)
说明:
(1)格式控制字符串决定了数据输出的结果。它由“格式说明字符”和“普通字符”组成。普通字符按原样输出,格式说明字符将对应输出数据转换成指定的格式输出。格式控制字符
串的形式为:
%[域宽]格式字符
域宽部分是可选的,每个格式说明对应于一个输出参数,该参数被转换成由格式说明规定的数据格式后输出。例如:
#include
void main()
{
int a=10;
float b=-5.2;
printf("a=%d,b=%8.3f",a,b);
}
输出结果如下:
a=10,b=  -5.200
(2)格式说明字符及其规定的输出格式
printf的格式说明字符见下表
格式说明符
参数类型
输出格式
d,i
int
十进制整数
o
int
八进制数(无前导0)
x,X
int
十六进制数(无前缀0x或0X)
u
int
无符号十进制数
c
int
单个字符
s
char *
字符串(必须以’\0’结束或给定长度)
f
double
小数形式的的浮点数(小数位数由精度决定,缺省为6位)
e,E
printf函数中的格式控制包括double
标准指数形式的浮点数(小数位数由精度决定,缺省为6位)
%

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。