gpt4 book ai didi

c++ - 编写自己的流媒体运算符时如何检查当前的 ostream dec/hex 模式?

转载 作者:行者123 更新时间:2023-11-30 03:12:57 25 4
gpt4 key购买 nike

我正在编写一个简单的类,它有一个 friend 可以写入输出流,例如 std::cout

我的类(class)状态可以用数字形式表示,我可能希望以十进制或十六进制表示。

如果我正在打印 POD int,我可以使用 std::hex 修饰符;我想做的是在我的职能中检查并采取相应行动。到目前为止,我的搜索是一片空白。

class Example
{
friend std::ostream& operator<<( std::ostream& o, const Example& e );
};

std::ostream& operator<<( std::ostream& o, const Example& e )
{
if ( /*check for hex mode*/ )
o << "hexadecimal";
else
o << "decimal";
return o;
}

我应该用什么来代替 /*check for hex mode*/

编辑:我让我的例子 super 通用。

最佳答案

您可以使用 ostreamflags() 函数并查看是否设置了 hex 位:

bool isHexMode(std::ostream& os) {
return (os.flags() & std::ios_base::hex) != 0;
}

关于c++ - 编写自己的流媒体运算符时如何检查当前的 ostream dec/hex 模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59089906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com