- C++程序设计基础(上)
- 周霭如 林伟健编著
- 509字
- 2020-08-28 09:48:04
1.6 数据输入和输出
C++的输入、输出操作由I/O流库提供。cin和cout是流库预定义的两个标准对象,分别连接键盘和屏幕,它们在头文件iostream中说明。这里仅介绍最简单的键盘输入和屏幕输出功能,参见第11章。
1.6.1 键盘输入
键盘输入的作用是读取用户输入的字符串,按相应变量的类型转换成二进制代码写入内存。
键盘输入语句格式为:
cin>> 变量 1>> 变量 2 … >> 变量 n;
其中,cin是预定义输入流对象;>>在流操作中称为提取运算符。
所有变量都必须是已经说明的基本类型存储单元。
程序运行,执行到输入语句后,等待用户按语句指定的变量顺序和类型输入各变量的值。输入的各数据用空格或换行符分隔。例如:
double x, y, *p = &y; cin >> x >> *p;
从键盘上输入:
34.5 7.96
cin提取操作从键盘获取字符串"34.5"和"7.96",按变量说明的类型转换成浮点型数据后写入变量x和y中。
还可以用换行符分隔,输入:
34.5 7.96
输入时,编译程序读到非算术型数据的字符,作为一个数据项的结束。但是,如果要求输入字符类型数据,对于不同版本的C++,情况有所不同。在VC.NET中,编译器按数值输入的方式处理,用空格或换行符分隔,也可以连续输入字符。cin不接受空格或换行符的键盘输入。
如果有: cin >> x+y;
将出现编译错误。请读者想一想为什么?
1.6.2 屏幕输出
屏幕输出的作用是从内存读取数据项,并对表达式求值,转换成相应的字符串显示到屏幕上。
屏幕输出语句格式为:
cout<< 表达式 1<< 表达式 2 … << 表达式 n;
其中,cout是预定义输出流对象;<<在流操作中称为插入运算符;表达式1~表达式n是输出项。
cout的插入操作首先对各输出项的表达式求值,然后转换成字符串形式输出。
提取符“>>”和插入符“<<”是I/O流重载的运算符,重载运算符可以改变语义,但不能改变优先级。当输出项表达式中的运算符优先级高于插入符时,cout能够正确地先计算值后输出;反之,就会出编译错误。
例如,以下语句出错,因为赋值符和条件运算的优先级都低于插入运算符:
cout<<a=b; //错误 cout<<a>b?a:b; //错误
可以添加括号改变优先级:
cout<<(a=b); //正确 cout<<(a>b?a:b); //正确
输出项可以包含各种控制格式的符号或函数。例如,制表符'\t',换行符'\n' 等特殊控制字符可以直接嵌入字符串输出项中。I/O 流还提供了一批数据输出格式控制符,它们作为独立输出项目使用。详见第11章。表1.6列出几个常用的输出格式控制符。使用格式控制符要包含头文件iomanip。
表1.6 常用输出格式控制符
例如,以下3条语句输出格式都一样:
cout << "Hello!\nI am ZhangHua.\n"; cout << "Hello!"<<'\n' << "I am ZhangHua." << '\n';
cout << "Hello!" << endl << "I am ZhangHua." << endl;
又如,输出浮点数7.5612,设置输出宽度为10,输出精度为4(小数点后保留3位有效数字),输出后换行,语句为:
cout << setw(10) << setprecision(4)<<7.5612 << endl;
【例1-14】用不同数制输出两个正整数的和。
#include <iostream> #include<iomanip> //包含格式输出文件 using namespace std; int main() { int a,b,s; //说明数据 cout.setf(ios::showbase); //要求输出显示控制符 a=01137; b=023362; s=a+b; //计算两个八进制数的和 cout<<"八进制数"; cout<<oct<<a<<"+"<<b<<"="<<s<<endl; //以八进制数显示结果 a=239; b=5618; s=a+b; //计算两个十进制数的和 cout<<"十进制数"; //以十进制数显示结果 cout<<dec<<a<<"+"<<b<<"="<<s<<endl; a=0x1a3e; b=0x4bf; s=a+b; //计算两个十六进制数的和 cout<<"十六进制数"; cout<<hex<<a<<"+"<<b<<"="<<s<<endl; //以十六进制数显示结果 }
程序运行结果:
八进制数 01137+023362=024521 十进制数 239+5618=5857 十六进制数 0x1a3e+0x4bf=0x1efd
1.6.3 表达式语句
任何表达式加上一个分号就成了语句,称为表达式语句。例如:
a=10 //赋值表达式 a=10; //赋值语句 i++ //算术表达式 i++; //算术表达式语句
又如: x-y;
也是一个合法的C++语句,执行x-y的操作,但没有把结果存放在任何地方,是一个没有意义的语句。
可以用{ }把一些语句括起来,称为复合语句或语句块。例如:
{ t = a; a = b; b = t; }
只有一个分号也是语句,称为空语句,例如:
;
输入/输出语句、表达式语句都是对数据进行操作的语句,它们在程序中按出现顺序执行。