gpt4 book ai didi

c++ - 如何在输出运算符中测试 std::showbase 或 std::noshowbase?

转载 作者:行者123 更新时间:2023-11-28 06:20:47 29 4
gpt4 key购买 nike

我有一个很大的整数类,我正试图让它尊重 std::showbasestd::noshowbase。在这里,“荣誉”意味着控制 Integer 类(而不是 C++ standard behaviors )中定义的后缀的使用:

std::ostream& operator<<(std::ostream& out, const Integer &a)
{
...

if(out.flags() & std::noshowbase)
return out;

return out << suffix;
}

但是,它会导致错误:

$ make static
c++ -DDEBUG -g3 -O1 -fPIC -Wno-tautological-compare -Wno-unused-value -DCRYPTOPP_DISABLE_ASM -pipe -c integer.cpp

integer.cpp:3487:17: error: invalid operands to binary expression ('int' and
'std::ios_base &(*)(std::ios_base &)')
if(out.flags() & std::noshowbase)
~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~
/usr/include/c++/4.2.1/bits/ios_base.h:79:3: note: candidate function not
viable: no known conversion from 'std::ios_base &(std::ios_base &)' to
'std::_Ios_Fmtflags' for 2nd argument
operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
^
1 error generated.

我也试过 std::ios::noshowbasestd::ios_base::noshowbase 有类似的错误。

如何测试 showbasenoshowbase

最佳答案

noshowbase 是一个函数,不是位掩码类型的整数。也没有 ios_base::noshowbase。但是有 ios_base::showbase。也许你想要:

if (out.flags() & std::ios_base::showbase) {
return out << suffix;
}

return out;

关于c++ - 如何在输出运算符中测试 std::showbase 或 std::noshowbase?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29352431/

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