输入/输出流类:iostream---------i input(输入) o output(输出) stream:流
iostream:
istream类:输入流类-------------cin:输入流类的对象
ostream类:输出流类------------cout:输出流类的对象
1 输入流
数据是从键盘或显示器流向输入缓冲区中,最后刷新了再流向内存
输入流:istream
istream实例化了cin对象
重载了运算符:>>
输入格式:
cin>>变量1;
cin>>变量1>>变量2>>变量3.........;
原型:
istream &cin >>基本的数据类型;
istream &cin >>int;
istream &cin >>char;
.......
注:
如果需要一次性输入多个数据,那么多个数据需要用空格进行间隔
另外需要输入回车,把输入的内容刷新到内存中
2 输出流
数据是从内存流向输出缓冲区,刷新时再从输出缓冲区流向终端或显示器
缓冲区的大小:
#define BUFSIZ 512个字节
2.1 格式
输出流:ostream
ostream实例化了cout对象、cerr对象(发生一些错误就会调用cerr输出错误信息)、clog对象(输出一些日志信息)
重载了运算符:<<
输出格式:
cout<<数据1;
cout<<数据1<<数据2<<数据3,........;
原型:
ostream类中:
ostream & operator <<(int)
{
ostream cout;
.....
return cout;
}
ostream & operator <<(char)
{
}
ostream &cout << 基本的数据类型;
ostream &cout << int ;
ostream &cout << char;
ostream &cout << unsigned int;
ostream &cout << char *;
ostream &cout << const char *;
ostream &cout << float;
.........
注:
1)当输出遇到endl时,会刷新输出缓冲区
2)当流对象使用完或超出作用域时,也会刷新输出缓冲区
3)当输出缓冲区装满时,也会刷新一次缓冲区
2.2 采用格式化输出
C语言的格式化输出也支持:\n、\r、.......
十进制形式输出:<iomanip>
dec:十进制
oct:八进制
hex:十六进制
....
示例:
#include <iostream>
#include<string>
#include <iomanip> //不要忘记包含此头文件
using namespace std;
int main()
{
int a;
cout<<"input a:";
cin>>a;
cout<<"dec:"<<dec<<a<<endl; //以上进制形式输出整数
cout<<"hex:"<<hex<<a<<endl; //以十六进制形式输出整数a
cout<<"oct:"<<setbase(8)<<a<<endl;//以八进制形式输出整数a
string pt= "China"; //pt指向字符串"China"
cout<<setw(10)<<pt<<endl; //指定域宽为10,输出字符串
cout<<setfill('*')<<setw(10)<<pt<<endl;//指定域宽10,输出字符串,空白处以"*"填充
double pi=22.0/7.0; //计算pi值
cout<<setiosflags(ios::scientific)<<setprecision(8);//按指数形式输出,8位小数
cout<<"pi="<<pi<<endl; //输出pi值
cout<<"pi="<<setprecision(4)<<pi<<endl;//改为4位小数
cout<<"pi="<<setiosflags(ios::fixed)<<pi<<endl;//改为小数形式输出,精度为4
cout<<"pi="<<fixed<<pi<<endl;//fixed确定小数点后精度为4
cout.setf(ios::showbase); //设置输出时的基数符号
cout<<"dec:"<<a<<endl; //默认以十进制形式输出a
cout.unsetf(ios::dec); //终止十进制的格式设置
cout.setf(ios::hex); //设置以十六进制输出的状态
cout<<"hex:"<<a<<endl; //以十六进制形式输出a
cout.unsetf(ios::hex); //终止十六进制的格式设置
cout.setf(ios::oct); //设置以八进制输出的状态
cout<<"oct:"<<a<<endl; //以八进制形式输出a
cout.unsetf(ios::oct); //终止以八进制的输出格式设置
char *pt="China"; //pt指向字符串"china"
cout.width(10); //指定域宽为10
cout<<pt<<endl; //输出字符串
cout.width(10); //指定域宽为10
cout.fill('*'); //指定空白处以'*'填充
cout<<pt<<endl; //输出字符串
double pi=22.0/7.0; //计算pi值
cout.setf(ios::scientific);//指定用科学记数法输出
cout<<"pi="; //输出"pi="
cout.width(14); //指定域宽为14
cout<<pi<<endl; //输出"pi值
cout.unsetf(ios::scientific); //终止科学记数法状态
cout.setf(ios::fixed); //指定用定点形式输出
cout.width(12); //指定域宽为12
cout.setf(ios::showpos); //在输出正数时显示"+"号
cout.setf(ios::internal); //数符出现在左侧
cout.precision(6); //保留6位小数
cout<<pi<<endl; //输出pi,注意数符"+"的位置
return 0;
}
输出结果如下: