在C++中把数据的I/O称为数据流,并提供了强大的"流"处理功能,以控制数据从一个位置流向另外一个位置。相对于内存,当数据从内存流向屏幕、打印机或硬盘时称为输出;当数据从键盘、硬盘流向内存时称为输入。C++用两个对象cin和cout实现标准的输入输出。
cin:它是istream类的对象,用来处理标准输入,即键盘输入。
cout:它是ostream类的对象,用来处理标准输出,即屏幕输出。
在C++中用istream类和ostream类的派生类iostream控制输入输出,并提供了输入和输出操作符。
<<称为插入操作符,其作用是向cout流中插入字符。
>>称为抽取操作符,其作用是从cin流中提取字符。
在此简单介绍一下屏幕的输入输出方法。
1、使用提取符实现键盘输入
格式如下:
cin >> <表达式> >> <表达式>...;
这里抽取符可连续使用,后跟表达式,表达式通常是获得输入值的变量或对象。
例如:int a,b;
cin >>a >>b;
说明:从键盘上输入数值时两个值之间一般用空格分隔,也可以用tab键或换行符。
控制输出格式
例1:输出8进制和16进制数 常量dec、hex和oct用来控制必须按10进制、16进制或8进制形式输出。 #include <iostream.h> void main( ) { int number=1234; cout <<"Decimal:"<<dec<<number<<endl <<"Hexadecimal:"<<hex<<number<<" "<<number*number<<endl <<"Octal:"<<oct<<number<<" "<<number*number<<endl; } 结果为: Decimal:1234 Hexadecimal:4d2 173c44 Octal:2322 5636104 注意:由于这三个标识符已经被定义为系统常量,注意不能在定义为其他变量使用。 |
例2:设置值的输出宽度 函数setw(n)用来控制输出宽度,如果数据实际宽度大于设置宽度,将按实际宽读输出;如果设置宽度大于实际输出宽度,数据输出时将在前面补相应数量的空格。另外,该控制符只对一次输出起作用。 #include <iostream.h> #include <iomanip.h> void main( ) { int number=1234; cout <<setw(3)<<number<<setw(10)<<number*number<<endl; } 输出结果为: 1234_ _ _1522756 |
例3: 设置填充字符 setfill(c)函数用来设置填充的字符,默认情况下为空格。 #include <iostream.h> #include <iomanip.h> void main( ) { int number=1234; cout <<setfill('$') <<setw(6)<<number <<setw(8)<<number*number<<endl ; } 输出$$1234$1522756 |
例4: 设置对齐格式 函数setiosflags(ios::left)和setiosflags(ios::right)用来控制输出左右对齐格式。当数据实际宽度小于输出宽度时该控制才起作用。默认情况下数据输出是右对齐。 #include <iostream.h> #include <iomanip.h> void main( ) { int number=1234; cout <<setfill('$')<<setiosflags(ios::left) <<setw(6)<<number <<setw(8)<<number*number<<endl ; } 输出1234$$1522756$ |
例5: 控制浮点数显示 函数setprecision(n)可用来控制输出流显示浮点数的数字个数(整数部分加小数部分)。c++默认的流输出数值的有效位是6。当小数截短显示时,进行四舍五入处理。 函数setflags(ios::fixed)用来控制符点数是按纯小数方式显示,函数setflags(ios::scientific)用来控制符点数是按科学记数法方式显示。系统默认为纯小数方式输出。 函数setiosflags(ios::showpoint) 用来强制显示小数点和符号。 #include <iostream.h> #include <iomanip.h> void main( ) { float x=20.0/7; y=18.0/6; cout<<x<<endl; cout<<setiosflags(ios::scientific)<<x<<endl; cout<<setprecision(18)<<x<<endl; cout<<setiosflags(ios::fixed)<<x<<endl; cout<<setprecision(0)<<x<<endl; cout<<setprecision(6)<<y<<endl; cout<<setiosflags(ios::showpoint)<<y<<endl; } 输出结果为: 2.85714 (默认6位,整数部分加小数部分) 2.857143e+000 (默认6位,指小数部分) 2.857142857142857e+000 (double型最多15位) 2.85714285714286 (double型有效位最多15位,整数部分加小数部分) 3 ( 无小数位) 3 (默认0不输出) 3.00000 (强制输出0) |
评论