与c语言中printf和scanf不同的是,c++中用了cout和cin。cout和cin分别是输出流和输入流。
c++中cin较好用之处在于能够识别空格
例:
//c语言中
int a;
char b;
scanf("%d%f", a, b);
//此如果输入中输入一个整型数据加空格再加一个字符
//那么此时空格会被b接收
//而在c++中
int a;
char b;
cin>>a>>b; //此时再同样的输入不会出问题
cout
格式符
int a;
double b;
//c语言中的输出格式符
printf("%2d",a); //输出占两位
printf("%-2d",a); //输出占两位,且向右缩进
printf("%.2f",b); //输出小数占两位
而c++中的cout 输出格式符比较麻烦
#include<iomanip> //使用前需添加头文件
int main()
{
int a;
double b;
cout << setw(2) << a << endl; //输出占两位
cout << sizeofflag(ios::left)<<setw(2)<<a<<endl; //向右缩进2位
cout << setprecision(2) << setiosflags(ios::fixed) << b <<endl; //两位小数,setprecision(n)和setiosflags(ios::fixed)合用设置
cout << setfill('0') << setw(2) << endl;
//setfill 是填充字符,往空出来的宽度中填充
}
按进制输出:
例:
int i = 123;
cout<<i<<endl;
cout<<dec<<i<<endl;
cout<<hex<<i<<endl;
cout<<oct<<i<<endl;
cout<<setbase(16)<<i<<endl;
//输出十进制,十六进制,八进制。默认输出十进制的数据。
关于setfill:
int a=0;
cout << setfill('0') << setw(2) << a << endl;
//这里输出的结果是 00
但是setfill要注意的是:setw控制符只对后面紧跟的起作用,而setfill控制符一旦设定,就会对后面一直起作用。
例:
#include <iostream>
using namespace std;
int main()
{
cout<<setw(8)<<setfill('*')<<123<<endl;
cout<<setw(8)<<456<<endl;
return 0;
}
/* 输出结果是:
*****123
*****456
*/
//如果只想填满紧跟后面的,必须重新设置:
#include <iostream>
using namespace std;
int main()
{
cout<<setw(8)<<setfill('*')<<123<<endl;
cout<<setw(8)<<setfill(' ')<<456<<endl;
return 0;
}
/* 输出结果:
***123
456
*/