如果存在,是否包含头文件?
此代码提供编译错误:
#include <iostream>
using namespace std;
int main()
{
    byte b = 2;
    cout << b << endl;
    return 0;
}
C++ 有很多类型模糊地描述相同的事物。假设我们正在针对一个字节为 8 位的架构进行编译,则以下所有类型都大致相似:
std::bytestd::uint8_tstd::bitset<8>unsigned char(8 位)char(8 位)如果一个字节是 8 位,那么所有这些类型或多或少可以互换吗?如果没有,什么时候需要使用一个而不是另一个?
我经常在 Stack Overflow 上看到诸如将十六进制字符串转换为字节数组之类的问题,其中有人使用std::uint8_t、char和unsigned char其他类型来表示“字节”。这只是风格偏好的问题吗?
注意:此问答旨在成为社区常见问题解答,鼓励进行编辑。std::byte尽管 C++17 已经引入了这似乎使得选择变得显而易见,但何时使用“字节”的类型以及为什么的问题始终出现。std::bitset提供一个常见问题解答来解决有关、std::uint8_t等作为“字节”的所有误解是很有用的。鼓励编辑。