2.1概述
输入和输出并不是C++语言中的正式组成成分,C和C++本身都没有为输入和输出提供专门的语句结构。输入输出不是由C++本身定义的,而是在编译系统提供的I/O库中定义的。
C++的输出和输入是用“流”(stream)的方式实现的。
在定义流对象时,系统会在内存中开辟一段缓冲区,用来暂存输入输出流的数据。在执行输入输出语句时,先把数据顺序存放在输出缓冲区中,直到输出缓冲区满或遇到输入输出语句中的endl(或′\n′,ends,flush)为止,此时将缓冲区中已有的数据一起输出,并清空缓冲区。
图1
2.2 C++输出
输出流即从程序中输出一系列的字符串,使用cout对象。
引用头文件#include <iostream>
using namespace std; 基本形式如下:
cout<<表达式1<<表达式2<<……;
换行
控制符endl
换行符:\
一个cout语句可以分写成若干行int main(int argc, char *argv [])
{
cout << "hello world" <<endl;
cout << "hello"
"world"
<<endl;
return 0;
} cout输出时,系统会自动判别输出数据的类型int main(int argc, char *argv [])
{
int a = 123;
double b = 456.789;
char c = 'a';
cout << a << b << c <<endl;
return 0;
} 2.3 C++输入
输入流即向程序输入一系列的字符串,使用cin对象。
引用头文件#include <iostream>
using namespace std; 基本形式如下:
cin >> 变量1 >> 变量2 >> …;
注意:输入时,以空行或回车作为一个变量输入结束。
cin输入时,系统会自动识别输入数据的类型int main(int argc, char *argv [])
{
int ival;
char ch;
cin >>ival >>ch;
cout << ival << ch <<endl;
return 0;
} 一个cin语句可以分写成若干行int main(int argc, char *argv [])
{
int ival;
char ch;
cin >>ival >>ch;
cout << "1 :" << ival << ch <<endl;
cin >> ival
>>ch;
cout << "2:" << ival << ch << endl;
cin >> ival ;
cin >> ch;
cout << "3:" << ival << ch <<endl;
return 0;
}
2.3格式控制符
设置状态标志流成员函数setf
一般格式:long ios::setf(long flags)
调用格式:流对象.setf(ios::状态标志)
表1
清除状态标志流成员函数unsetf
一般格式:long ios::unsetf(long flags)
调用格式:流对象.unsetf(ios::状态标志);
设置域宽流成员函数width
一般格式:int ios::width(int n)
调用格式:流对象.width(n);
注:它只对下一个流输出有效,输出完成后,恢复默认值0
设置实数的精度流成员函数precision
一般格式:int ios::precision(int n)
调用格式:流对象.precision(n);
注:参数n在十进制小数输出时表示有效数字。标志fixed和scientific表示输出小数位数
填充字符流成员函数fill
一般格式:char ios::fill(char ch)
调用格式:流对象.fill(ch);
注:当输出值达不到域宽时用填充符来填充,默认填充符为空格,与width函数搭配使用。
预定义操作符
表2
预定义操作符
| 功能
| 输入/输出
| dec
| 设置整数基数为10
| 输入/输出
| hex
| 设置整数基数为16 输入/输出
| | oct
| 设置整数基数为8
| 输入/输出
| setbase(n)
| 设置整数的基数为n(可取0或10代表十进制,8代表八进制和16代表十六进制,默认为0)
| 输入/输出
| ws
| 跳过输入的空格符
| 输入
| endl
| 输出一个换行符并刷新输出流
| 输出
| ends
| 插入null,通常用来结束一个字符串
| 输出
| flush
| 刷新一个输出流
| 输出
| setfill©
| 设置填充符(默认为空格)
| 输出
| setprecision(n)
| 设置实数精度n
| 输出
| setw(n)
| 设置域宽n
| 输出
| setiosflags(flags)
| 设置指定状态标志,多个用"|"分隔
| 输入/输出
| resetiosflags(flags)
| 清除指定状态标志,多个用"|"分隔
| 输入/输出
| 表3
|