插入运算符用于将数据插入一个输出流对象中,流对象再进一步将数据输出到关联设备中
1.cout的put和write方法
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
cout.put('A').put('B').put('\n');//输出单个字符
const char* str = "hello world\n";
cout.write(str,strlen(str)+1);
//输出一串字符,第一个参数字符串地址,第二参数要输出的长度
return 0;
}
2.输出格式控制
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
//1.设置成员宽度setw和width
cout << "1234567890" << endl;
cout << setw(5) << 1.1 << 2.1 << "<--" << endl; //setw()只对下一个输出的字符生效
cout.width(5); //和setw()等价,cout.width()属于成员函数
cout << 1.1 << 2.1 << "<--" << endl;
//2.填充字符控制setfill和fill
cout << "1234567890" << endl;
char oldFill = cout.fill('*'); //由于设置填充字符后对程序后面的代码产生永久影响,要记得还原现场
cout << setw(5) << 1.1 << "<--" << endl;
cout.fill(oldFill);
cout << setw(5) << 1.1 << "<--" << endl;
cout << setfill('*') << setw(5) << 1.1 << "<--" << endl;
//3.浮点数精度控制
double pi = 3.141592654;
int oldPrecision = cout.precision(4);
cout<<pi<< "<--" << endl;
cout<<setprecision(oldPrecision)<<pi<< "<--" << endl;
//在程序没有是设置计数法的情况下,精度表示浮点数的有效数字的位数
//4.程序计数法ios::fixed和ios::scientific
//设置计数法的情况下,精度表示浮点数的小数点后的位数
cout<<setiosflags(ios::fixed)<<pi<< "<--" << endl;
cout<<resetiosflags(ios::fixed);
cout<<setiosflags(ios::scientific)<<pi<< "<--" << endl;
//5.设置现实的数制系统
int n =100;
cout<<hex<<n<<endl;//一次设置永久生效
cout<<n<<endl;
cout<<oct<<n<<endl;
cout<<dec<<n<<endl;
//6.设置其他格式状态setf和unsetf成员函数(setformat和unsetformat)
//一个参数类型
int x= 200;
cout.setf(ios_base::showpos);
cout<<x<<endl;
cout.unsetf(ios_base::showpos);
//两个参数,例如设置对其方向
cout.setf(ios::adjustfield,ios::left);
cout<<setw(10)<<x<< "<--" << endl;
//除了使用setf和unsetf方法设置格式状态,还可以使用标准控制符设置状态格式
//如hex、oct、dec、left、right、showbase、noshowbase等
cout<<showbase<<left<<hex<<x<<endl;
//这种方法比setf和unsetf成员函数方便
return 0;
}
#include <iostream>
#include <iomanip> //使用流控制符需要加io操作头文件
using namespace std;
int main()
{
int oldPrecision = cout.precision(4); //精度一旦设置,后面输出都生效
float pi = 314.1592654;
cout << pi << endl; //精度设置完后要设置定点输出,否则就变成了最多位数
cout.setf(ios_base::fixed,ios_base::floatfield); //现在进度就变成小数点后4位
cout << pi << endl;
cout.unsetf(ios_base::fixed);
cout.setf(ios_base::scientific,ios_base::floatfield);
cout << pi << endl;
cout.unsetf(ios_base::scientific);
float e = 271.8281828;
cout.precision(oldPrecision);
cout << e << endl;
cout << setiosflags(ios_base::fixed);
cout << e << endl;
cout << resetiosflags(ios_base::fixed);
cout << setiosflags(ios_base::scientific);
cout << e << endl;
cout << resetiosflags(ios_base::scientific);
return 0;
}