cout

你真的会用cout吗?

#include<iostream>
#include<iomanip>
using namespace std;
int main(){
    //对于直接在operator<<后添加的标记,cout会永远执行(仅限文中使用的标记),直到与它冲突的标记被调用(如boolalpha&noboolalpha.oct&dec&hex,uppercase&nouppercase)
    //对于直接在operator<<后添加的标记,也可使用cout<<setiosflags()或cout.setf()
    cout<<boolalpha<<true<<" "<<false<<" "<<1<<" ";//boolalpha标记表示用"true"&"false"输出布尔型值
    cout<<(bool)-1<<endl;
    cout<<noboolalpha<<true<<" "<<false<<endl;//noboolalpha标记表示用1&0输出布尔型值(用于开启boolalpha标记后)
    cout<<showpos<<114514<<" "<<-1919810<<" "<<114514.1919810<<" "<<true<<" "<<false<<" "<<0<<endl;//showpos标记表示在输出正数时加上'+'号(其中浮点数会保留整数,true会输出"+1",false和0会输出"+0")
    cout<<noshowpos<<114514<<" "<<-1919810<<" "<<114514.1919810<<" "<<true<<" "<<false<<" "<<0<<endl;//noshowpos标记表示在输出正数时不加'+'号(其中浮点数同样会保留整数)
    cout<<oct<<2147483647<<" "<<114514<<" "<<-1919810<<endl;//oct标记表示用8进制输出整数
    cout<<dec<<2147483647<<" "<<114514<<" "<<-1919810<<endl;//dec标记表示用10进制输出整数
    cout<<hex<<2147483647<<" "<<114514<<" "<<-1919810<<endl;//hex标记表示用16进制输出整数(其中字母a~f,x默认为小写)
    cout<<uppercase<<2147483647<<" "<<114514<<" "<<-1919810<<endl;//uppercase标记表示对于hex格式下的输出中字母(a~f,x)大写输出
    cout<<showbase;//showbase标记表示输出时显示整数的基数,其中oct标记开启时会在输出时将位数补成4的倍数,hex标记开启时会在输出前加上"0x"(uppercase标记开启时为"0X")
    cout<<oct<<2147483647<<" "<<114514<<" "<<-1919810<<endl;
    cout<<dec<<2147483647<<" "<<114514<<" "<<-1919810<<endl;
    cout<<hex<<2147483647<<" "<<114514<<" "<<-1919810<<endl;
    cout<<noshowbase;//noshowbase标记表示输出时不显示整数的基数(用于开启showbase标记之后)
    cout<<showpoint;
    cout<<dec<<114514<<" "<<114154.0<<" "<<114514.1919810<<endl;
    cout<<nouppercase;//nouppercase标记用于取消大写(用于开启uppercase标记后)
    cout.fill('*');//fill()函数在指定输出宽度的情况下对空位补充对应字符(默认为' 'space)
    cout.width(10);//width()函数设定输出宽度,仅针对下一次输出
    cout<<dec;
    cout.setf(ios::left);//setf(a)表示对以下所有的cout输出追加格式a
    cout<<114514<<endl;
    cout.width(10);
    cout.setf(ios::right,ios::left);//setf(a,b)表示对以下的所有cout输出追加格式a,同时不追加格式b
    cout<<114514<<endl;
    cout.width(10);
    cout<<1919810<<endl;
    cout.setf(ios::left,ios::right);
    cout.width(10);
    cout<<1145141919810<<endl;//当原本的输出宽度大于设定宽度时不会截位
    cout.setf(ios::right,ios::left);
    cout.width(10);
    cout<<1145141919810<<endl;
    cout.precision(5);//precision(k)函数表示对于浮点数(float&double),以下所有cout输出时保留k位有效数字
    cout<<114.514<<endl;
    cout<<1919.810<<endl;
    cout.precision(3);
    cout<<114.514<<endl;//使用了precision()函数时,会对输出进行四舍五入
    cout<<1919.810<<endl;//对于整数部分长度大于设定长度k时,会转换成科学计数法
    cout<<uppercase;//uppercase标记也可以使科学计数法输出时的'e'变成'E'
    cout<<114514.1919810<<endl;
}
原文地址:https://www.cnblogs.com/Ender-hz/p/14753291.html