查找输出流的当前基

Find current base of output stream

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

好吧,在深入了解这个基础变化的实际运作方式后,我发现基本上只有这 3 个基础可供选择(std::decstd::octstd::hex ).使用 10816 以外的值调用 std::setbase() 只是默认为 dec.

正如 Paul Sanders 发现的那样,可以通过 std::ostream::flags() 获取当前标志,然后 & 那些具有 basefield 的标志:

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