查找输出流的当前基数

Find current base of output stream

提问人:Lauchmelder 提问时间:7/19/2020 更新时间:7/19/2020 访问量:298

问:

当运算符重载以写入输出流时,是否有可能获取此流当前所在的数字基数?例如,如果在调用我的重载运算符之前被调用,我可以确定流当前是否处于“十六进制模式”吗?<<std::hex

C++ IOstream iomanip

评论

4赞 Paul Sanders 7/19/2020
您可以通过调用 std::ostream::flags() 而不是通过 IO 操纵器来实现。

答:

3赞 Lauchmelder 7/19/2020 #1

好吧,在深入研究了这个基础变化的实际工作原理之后,我发现基本上只有这 3 个基础可供选择(、、)。使用除 以外的值进行调用,或者只是默认为 dec。std::decstd::octstd::hexstd::setbase()10816

正如保罗·桑德斯(Paul Sanders)所发现的那样,人们可以通过以下方式获取当前旗帜,然后通过basefield获取旗帜:std::ostream::flags()&

(std::ostream::flags() & std::ios_base::<base>如果它不是当前的基础,则为其他东西。0