第3章 键盘输入和屏幕输出
3.1简单的键盘输入
Data Stream(数据流):数据流对象用于在各种不同的设备(如键盘和屏幕)上执行基本的数据输入和输出操作。
所谓流,就是与输入输出设备相关联的数据通信对象。
输入:cin>>" "; 输出:cout <<“ ”;
3.2流操纵符
流操纵符(setw, setfill, fixed,setprecision)用于对输入和输出数据流进行修改。
当程序中出现,在圆括号中有一个参数的流操纵符时,头文件要加#include <iomanip>
setw :设置数据域的宽度(数据项在屏幕上所占的列数)
setw 对输出流中的下一个数据项起作用;
如果域宽设置得太小不足以显示一个数值,
那么系统会自动调整域宽,使其能够显示数据的所有位的数字;
setfill :把占位符从空格改变为其他字符
setfill 把占位符从空格改变为其他字符 ;
setfill 对送入输出流中的所有后继数据项都起作用;
setprecision: 用于指定要显示的数据的位数
流操纵符fixed 和setprecision 将 一直对输出流中的后继数据项起 作用。
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int a=123456 ;
cout<<"开始"<<setw(8)<<a<<"结束"<<endl;
//输出结果:开始 123456结束
//即setw默认以空格为占位符补位
cout<<"开始"<<setw(8)<<setfill('*')<<a<<"结束"<<endl;
//输出结果:开始**123456结束
//即setfill(' ')用于改变占位符
double b=123.45678;
cout<<"开始"<<b<<"结束"<<endl;
//输出结果:开始123.457结束
cout<<"开始"<<setprecision(7)<<b<<"结束"<<endl;
//输出结果:开始123.4568结束
cout<<"开始"<<fixed<<setprecision(2)<<b<<"结束"<<endl;
//输出结果:开始123.46结束
return 0;
}
*endl:将光标移动到一个新行的起始位置,也属于流操纵符,第2章已提到过,不再赘述
3.3 单个字符的输入和输出
Whitespace Characters(空白字符):
在屏幕上产生的显示结果是不可见的空白或空格, 如Tab、Enter和空格键。
输入方法:
一是用noskipws:不管从键盘读入什么,键盘读取单个字符(包括空格)
二是将函数get( )与输入流对象 cin 联合使用
输出方法:
cout and its<<;
利用输出流对象 cout 的成员函数put( )来显示一个字符。
从键盘读取单个字符(包括空格)
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
char ch1,ch2;
//用noskipws输入,cout<<输出
cout<<"请输入一个字符(含空白字符)";
cin>>noskipws>>ch1;
cout<<"用noskipws输入,cout<<输出的单个字符如下:";
cout<<ch1;
cout<<"***"<<endl;
//用cin.get( )输入,cout.put( )输出
cout<<"请输入一个字符(含空白字符)";
cin.get(ch2) ;
cout<<"用cin.get( )输入,cout.put( )输出的单个字符如下:";
cout.put(ch2);
cout<<"***"<<endl;
//cout<<"***"<<endl;均用于检验空白字符的输出情况
return 0;
}
Programming pitfalls
1. 不要混淆流插入运算符(<<输出)和流提取运算符(>>输入)。
2. 某些流操纵符只作用于下一个数据域(例如setw);
而另外一些流操纵符(例如 setprecision)对所有的后继数据域都起用。
3. 在使用圆括号中有一个参数的流操纵符时,例如setw( 4 ),头文件#include<iomanip>是必需的。
对于其他流操纵符(例如endl),则不需要加入这一行。
快速参考