C++输入输出语句
(2009-05-01 10:52:51)
标签:
杂谈 |
分类: 编程基础 |
IO 流是一系列由源到目的的字节流,字节通常是字符。所以数据流是指从输入设备到计算机的序列字符。有两种类型的数据流:输入数据流和输出数据流。输入数据流是指从输入设备到计算机的序列字符。输出数据流是指从计算机到输出设备的序列字符。
1 、输出
使用cout 输出数据流可以在屏幕上显示字符和数字等数据。为了控制输出格式,C++ 提供了3 种方式,即使用I/O 操作符、使用ios 类的成员函数和使用cout 的相关函数。但实际上,这些函数可以混合使用。
(1 )使用I/O 操作符
常用的一些I/O 操作符:
操作符功能应用于
dec
格式化为十进制数值输入输出
hex
格式化为十六进制数值输入输出
oct
格式化为八进制数值输入输出
setiosflags(long flag)
设置flag 中指定的标志位输入输出
resetiosflags(long flags) 清除flag 中指定的标志位输入输出
ws 设置跳过输入中的签到空白字符输入
setw(int width) 设置输出数据段宽度为width 输出
set precision(int num) 设置浮点数精度位数输出
setfill(int ch) 设置ch 为填充字符输出
endl 输出一个换行符并刷新流输出
ends 输出一个空字符‘\n ’以结束字符串输出
flush 强制刷新流输出
注意:使用setw 、setprecision 、setfill 等操作符需要在程序的前面添加头文件iomanip.h 。
(2 )使用ios 成员函数
在C++ 中,每一个I/O 流都有自己当前的数据控制状态,这些状态用一个长整形表示,即ios 类的数据成员x_flags (称为格式化标志字)。这些格式化标志字在ios 类中定义为共有的枚举常量。
枚举类型中的每一个符号都用于设置或取消流的数据格式化标志字的一个状态。x_flags 的每一位表示格式控制的一个状态标志,通过上述的ios 类枚举符号常量,就可以定义x_flags 的每一种状态标志。
使用枚举常量时应该加上“iso:: ”前缀。
由于x_flags 是ios 类的保护成员,所以无法直接对这个标志字进行操作,而必须使用ios 类提供的公有成员函数来操作这些标志字。如下所示:
?
Setf()
成员函数setf() 用于设置状态标志,如:
设置输出流cout 的showbase 标志使用的语句:cout.setf(ios::showbase);
设置输入流cin 的skipws 标志使用的语句:cin.setf(ios::skipws);
在setf() 中还可用位操作符“| ”将多个标志连接在一起。例如:
cout.setf(ios::scientific|ios::showpoint) ;就是同时设置了两个标志。
?
unsetf()
成员函数unsetf() 用来取消格式标志。具体用法和setf() 相似。
(3 )使用cout 的相关函数
除了前面的两种方式可以格式化输出数据外,也可以直接使用cout 的相关函数,常用的有precision 、width 、fill 、put 等函数。
?
precision() 成员函数
该成员函数的声明如下:int precision([int
num]) ;
用于设置或返回(不带参数时)浮点数的输出精度。也就是通过这个公共成员函数设置ios 类的保护数据成员x_precision 的值,该成员的默认值为6 。precision ()函数的设置值一直有效,直到下一个precision() 函数改变该值为止。
?
width() 成员函数
该函数的声明:int width([int len]) ;
用于设置或返回(不带参数时)输出数据的字段宽度。也就是通过这个公共成员函数设置ios 类的保护数据成员x_width 的值。width() 函数的设置只对下一个输出有效。
?
fill() 成员函数
该函数的声明:char fill([char ch]) ;
用于设置或返回(不带参数时)输出的填充字符。也就是通过这个公共成员函数设置ios 类的保护数据成员x_fill 的值,该成员的默认值为空格。fill() 函数的设置值一直有效,直到下一个fill() 函数改变该值为止。
?
put() 成员函数
该函数的声明:char put(char ch) ;
用于输出字符ch 。Put 还可以级联,如put(ch1).put(ch2) ,输出字符是ch1 和ch2 。
2 、输入
C++ 提供了输入数据流cin ,可以利用输入数据流cin 读取键盘输入的字符和数字等,并把它赋值给指定的变量。从键盘输入的数据通过cin 接受,再由提取运算符>> 送到程序指定的变量中,因此,用户输入数据时要避免输入的数据超出指定变量的值域。
(1 )使用I/O 操作符
具体的使用和cout 类似
(2 )使用cin 的成员函数
为了输入字符和字符串,cin 提供了get 和getline 成员函数。
?
get 成员函数
该成员函数没有参数,从指定的数据流中输入一个字符(即使这是空白字符),并返回这个字符作为函数调用的值。
?
getline 成员函数
该成员函数的基本使用格式:getline( 字符串首地址,最大长度) ;
用于将用户输入的字符串放在“字符串首地址”指定的内存中,最大长度不能超过“最大长度”指定的值。
1
使用cout
(1
常用的一些I/O
操作符功能应用于
dec
hex
oct
setiosflags(long flag)
resetiosflags(long flags)
ws
setw(int width)
set precision(int num)
setfill(int ch)
endl
ends
flush
注意:使用setw
(2
在C++
枚举类型中的每一个符号都用于设置或取消流的数据格式化标志字的一个状态。x_flags
使用枚举常量时应该加上“iso::
由于x_flags
?
成员函数setf()
设置输出流cout
设置输入流cin
在setf()
cout.setf(ios::scientific|ios::showpoint)
?
成员函数unsetf()
(3
除了前面的两种方式可以格式化输出数据外,也可以直接使用cout
?
该成员函数的声明如下:int
用于设置或返回(不带参数时)浮点数的输出精度。也就是通过这个公共成员函数设置ios
?
该函数的声明:int width([int len])
用于设置或返回(不带参数时)输出数据的字段宽度。也就是通过这个公共成员函数设置ios
?
该函数的声明:char fill([char ch])
用于设置或返回(不带参数时)输出的填充字符。也就是通过这个公共成员函数设置ios
?
该函数的声明:char put(char ch)
用于输出字符ch
2
(1
具体的使用和cout
(2
为了输入字符和字符串,cin
?
该成员函数没有参数,从指定的数据流中输入一个字符(即使这是空白字符),并返回这个字符作为函数调用的值。
?
该成员函数的基本使用格式:getline(
用于将用户输入的字符串放在“字符串首地址”指定的内存中,最大长度不能超过“最大长度”指定的值。
前一篇:Dev C++
后一篇:gethostbyname()