cout.setf()

cout.setf(ios_base::fixed, ios_base::floatfield)什么含义?
//C++为标准输入输出定义了一些格式标志,可以通过flags(),setf(),unsetf()三个函数来控制

//C++中的cout.setf()函数

/**类似于C中的printf(),C++中通过cout实现格式输出,cout.setf()是通过设置格式来控制输出形式
   setf()函数有两个原型,fmtflags 是 bitmask类型(一种用来存储各个位值的类型)的 typedef名**/

//fmtflags setf(fmtflage)             //第一原型
//fmtflags setf(fmtflags,fmtflags)    //第二原型

//(1)   fmtflags setf(fmtflage)            

//通过标志操作
/** 标识           功能
    boolalpha   可以使用单词true和false进行输入/输出的布尔值
    oct         8进制显示数值
    dec         10进制显示数值
    hex         16进制显示数值
    left        输出左对齐
    right       输出右对齐
    scientific  科学计数法显示浮点数
    fixed       常规计数法(与科学计数法相对应)显示浮点数
    showbase    显示所有数值基数
    showpoint   显示小数点与额外的零,即使不需要
    showpos     非负数前显示正号“ + ”
    skipws      从一个流进行读取时,跳过空白(space,tab,newline)
    unitbuf     每次插入后,清空缓冲区
    uppercase   以大写形式显示科学计数法中的e和16进制的x
    internal    将填充字符回到符号与数值之间
    **/

//形式一    标识(cout); 
//          cout << 输出 << endl;
#include <iostream>
using namespace std;
int main() {
	showpos(cout);
	cout << 255 << endl;
	oct(cout);
	cout << 0b101101 << endl;
	hex(cout);
	cout << 27 << endl;
	dec(cout);
	cout << 0xff << endl;
	scientific(cout);
	cout << 255.255 << endl;
	fixed(cout);
	cout << -1.25E+3 << endl;
	return 0;
}

//形式二    cout.setf(ios_base::标识);
//         cout << 输出 << endl;
#include <iostream>
using namespace std;
int main() {
    cout.setf(ios_base::fixed);
    cout << -1.25E+3 << endl;
    return 0;
}

   //通过操作符操作

//iostream中定义的操作符
/**操作符        描述                   备注(无备注就只有输出)
    boolalpha   启用boolalpha标识       输入、输出
    noboolalpha 关闭boolalpha标识       输入、输出

    oct         启用oct标识             输入、输出
    dec         启用dec标识             输入、输出
    hex         启用hex标识             输入、输出

    left        启用left标识
    right       启用right标识

    fixed       启用fixed标识
    scientific  启用scientific标识

    showbase    启用showbase标识
    noshowbase  关闭showbase标识

    showpoint   启用showpoint标识
    noshowpoint 关闭showpoint标识

    showpos     启用showpos标识
    noshowpos   关闭showpos标识

    skipws      启用skipws标识           仅输入
    noskipws    关闭skipws标识           仅输入

    unitbuf     启用unitbuf标识
    nounitbuf   关闭unitbuf标识

    uppercase   关闭uppercase标识
    nouppercase 关闭uppercase标识

    internal    启用internal标识

    endl        输出换行标识并清空缓冲区
    ends        输出空字符
    flush       清空流
    ws          跳过所有前导空白字符      仅输入

    **/

//iomanip中定义的操作符
/** setiosflags(long f)     启用指定为f的标识   输入、输出
    resetiosflags(long f)   关闭指定为f的标识   输入、输出
    setfill(int ch)         设置指定字符为ch
    setbase(int base)       设置数值基本数为base
    setprecision(int p)     设置数值的精度(四舍五入)
    setw(int w)             设置域宽度为w

    **/

//形式    cout << 标识 << 输出 << endl;
#include <iostream>
using namespace std;
int main() {
    cout << showpos << 255 << "\n" << noshowpos << 255 << endl;
	cout << dec << 0xff << endl;
	cout << hex << 27 << endl;
	cout << oct << 0b101101 << endl;
	cout << scientific << 255.255 << endl;
	cout << fixed << -1.25E+3 << endl;
    return 0;
}

#include <iostream>
#include <iomanip>
using namespace std;
int main() {
	cout << setiosflags(ios_base::scientific);
	cout << 255.255 << endl;
	cout << resetiosflags(ios_base::scientific);
	cout << 255.255 << endl;
	cout << setprecision(4);
	cout << 255.255 << endl;
}


//(2)   fmtflags setf(fmtflags,fmtflags)    
//第一个参数指出要设置哪些位,第二个参数指出要清除第一个参数中的哪些位
/**self(long long)参数
    fmtflags mask参数二      fmtflags:flags参数一     含义
                            ios_base::oct           8进制
    ios_base::basefield     ios_base::dec           10进制
                            ios_base::hex           16进制

                            ios_base::fixed         一般计数法
    ios_base::floatfield    ios_base::scientific    科学计数法
                            
                            ios_base::left          左对齐
    ios_base::adjustfield   ios_base::right         右对齐
                            ios_base::internal      符号或前缀左对齐,值右对齐

    **/
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值