查找输出流的当前基
Find current base of output stream
在重载 <<
运算符以写入输出流时,是否有可能获取该流当前所在的数字基数?例如。如果 std::hex
在调用我的重载运算符之前被调用,我可以查明流当前是否处于“十六进制模式”吗?
好吧,在深入了解这个基础变化的实际运作方式后,我发现基本上只有这 3 个基础可供选择(std::dec
、std::oct
、std::hex
).使用 10
、8
或 16
以外的值调用 std::setbase()
只是默认为 dec.
正如 Paul Sanders 发现的那样,可以通过 std::ostream::flags()
获取当前标志,然后 &
那些具有 basefield 的标志:
(std::ostream::flags() & std::ios_base::<base>
是 0
如果它不是当前基地,如果它是其他东西。
在重载 <<
运算符以写入输出流时,是否有可能获取该流当前所在的数字基数?例如。如果 std::hex
在调用我的重载运算符之前被调用,我可以查明流当前是否处于“十六进制模式”吗?
好吧,在深入了解这个基础变化的实际运作方式后,我发现基本上只有这 3 个基础可供选择(std::dec
、std::oct
、std::hex
).使用 10
、8
或 16
以外的值调用 std::setbase()
只是默认为 dec.
正如 Paul Sanders 发现的那样,可以通过 std::ostream::flags()
获取当前标志,然后 &
那些具有 basefield 的标志:
(std::ostream::flags() & std::ios_base::<base>
是 0
如果它不是当前基地,如果它是其他东西。