提问人:Lauchmelder 提问时间:7/19/2020 更新时间:7/19/2020 访问量:298
查找输出流的当前基数
Find current base of output stream
问:
当运算符重载以写入输出流时,是否有可能获取此流当前所在的数字基数?例如,如果在调用我的重载运算符之前被调用,我可以确定流当前是否处于“十六进制模式”吗?<<
std::hex
答:
3赞
Lauchmelder
7/19/2020
#1
好吧,在深入研究了这个基础变化的实际工作原理之后,我发现基本上只有这 3 个基础可供选择(、、)。使用除 以外的值进行调用,或者只是默认为 dec。std::dec
std::oct
std::hex
std::setbase()
10
8
16
正如保罗·桑德斯(Paul Sanders)所发现的那样,人们可以通过以下方式获取当前旗帜,然后通过basefield获取旗帜:std::ostream::flags()
&
(std::ostream::flags() & std::ios_base::<base>
如果它不是当前的基础,则为其他东西。0
评论
std::ostream::flags()
而不是通过 IO 操纵器来实现。