insert:将一个对象插入输出流中 <<
extractor:将内容从流里解析出来 >>
流:一维 单方向
cin
:标准输入
cout
:标准输出
cerr
:标准错误
clog
:标准日志
//全局函数,而非成员函数
istream& operator>>(istream& is,T& obj){//流里的position(读取位置在修改)会变化,因此不加const
//...
return is;
}
cin>>a>>b>>C;
((cin>>a)>>b)>>c;
//法一
int get();
int ch;
while((ch=cin.get())!=EOF)
cout.put(ch);
//法二
istream& get(char& ch);
ostream& opeartor<<(ostream& os,const T& obj){
//...
return os;
}
cout<<a<<b<<c;
((cout<<a)<<b)<<c;
#include<iomanip> //设置输出格式
int n;
cout<<"enter number in hexadecimal"<<flush;
cin>>hex>>n; //使用iomanip告诉cin下一个输入的是十六进制(hex)
//endl是一个iomanip
#include<iostream>
#include<iomanip>
main(){
cout<<setprecision(2)<<1000.243<endl;//setprecision(2)要求精度为2
cout<<setw(20)<<"OK!";//setw(20)要求宽度为20
return 0;
}
//输出结果:
//1e03
// OK!(前面有17个空格)
dec
:十进制
hex
:十六进制
oct
:八进制
setw(int)
:最小宽度,超出也没有影响
setfill(ch)
:如果输入内容没有那么宽,设置填充内容
setbase(int)
:与hex
差不多,只不过可以设置任意数值
ws
:对于输入来说,跳过空格
setprecision(int)
:设置精度,即多少位有效数字
setiosflags(long)
:set 意味着设置为1
resetiosflags(long)
:reset 意味着设置为0
ostream& manip(ostream& out){
...
return out;
}
ostream& tab(ostream& out){
return out<<"\t";
}
cout<<"Hello"<<tab<<"World!"<<endl;