gpt4 book ai didi

c++ - cout uint8_t 作为整数而不是字符

转载 作者:行者123 更新时间:2023-11-30 01:57:48 31 4
gpt4 key购买 nike

#include<algorithm>
#include<iostream>
using namespace std;

int main()
{
cout << (uint8_t)123 << endl;
}

这将输出 { , 自 {的 ASCII 是 123。

但我想得到123反而。我找到了 cout << (int)123 << endl;会这样做,但我不愿意投 uint_8int每一次。我可以配置 cout实现这个目标?

最佳答案

我绝对不会容忍我即将提出的解决方案。我还怀疑标准可能不允许这样做,但到目前为止我还无法证明这一点。如果有人可以向我提供表明不允许的引用,那么我将删除此答案。不管怎样,到目前为止,我的测试表明在全局范围内简单地重载运算符似乎是可行的。

#include <iostream>
#include <cstdint>

std::ostream & operator<<(std::ostream & os, std::uint8_t val)
{
return os << static_cast<int>(val);
}

int main()
{
std::uint8_t val = 123;
std::cout << val;
}

我没想到这行得通,但后来我意识到 char/unsigned char/signed char operator<< 的重载都是std中的免费功能ADL 选择的命名空间。我猜想全局函数被认为比 ADL 函数更匹配,但我不确定。

关于c++ - cout uint8_t 作为整数而不是字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18246154/

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