平常所说的输入输出是人站在文件的角度看的,数据从文件流向其他位置:输出。数据从其他地方流向文件:输入。
#include<iostream>
using namespace std;
//输出重定向
//标准的输出,默认输出到显示器上
void main(){
int a;
cout<<"Hello IO"<<endl;
}
缓冲区streambuf
#include<iostream>
using namespace std;
//CPU把数据放到缓冲区,然后做其他事去了,由缓冲区把数据显示到屏幕上
void main(){
int a;
cout<<"Hello IO"; //缓冲区
}
cin、cout、clog是带缓冲区的。
三种情况缓冲区内容会输出到屏幕上:
1.输出endl,刷新缓冲区。
2.flush清除缓冲区。
3.当缓冲区满了,一次性直接输出到屏幕上。
cerr为非缓冲区流,一旦错误发生立即显示。
#include<iostream>
using namespace std;
void main(){
cerr<<"Error!";
cout<<"Hello IO"; //缓冲区
cout<<endl;
}
格式输出
对齐
#include<iostream>
using namespace std;
void main(){
for(int i = 1; i <= 10; ++i){
for(int j = 1; j <= 10; ++j){
cout.width(5);
cout.flags(ios::left); //左对齐
cout<<i*j;
}
cout<<endl;
}
}
输出进制转换结果
#include<iostream>
using namespace std;
void main(){
int a = 123456789;
cout.flags(ios::showpos); //正数输出“+”
cout<<a<<endl;
cout.flags(ios::hex | ios::showbase); //ios类里面的16进制以及ios类里面的基类型,之所以用或,是因为不同功能组合
cout<<a<<endl;
}
也可以直接在 cout 后面输出,但是有些 VC6.0 里面不支持。
#include<iostream>
using namespace std;
void main(){
int a = 123456789;
cout<<hex<<a<<endl; //直接输出十六进制
}
#include<iostream.h>
#include<iomanip.h>
void main(){
for(int i = 1; i <= 10; ++i){
for(int j = 1; j <= 10; ++j){
cout.flags(ios::left);
cout<<setw(5)<<i*j; //缺少头文件
}
cout<<endl;
}
}
版权声明:本文为博主原创文章,如有错误,恳请大家在评论区指出,在下不胜感激~如要转载注明出处即可~