¿Hay un tipo de datos 'byte' en C++?

¿Hay un tipo de datos 'byte' en C++?

No, no existe ningún tipo llamado "byte " en C++. Lo que quieres en su lugar es unsigned char (o, si necesita exactamente 8 bits, uint8_t de <cstdint> , desde C++11). Tenga en cuenta que char no es necesariamente una alternativa precisa, ya que significa signed char en algunos compiladores y unsigned char en otros.


Sí, hay std::byte (definido en <cstddef> ).

C++ 17 lo introdujo.


No, no hay tipo de datos byte en C++. Sin embargo, siempre puede incluir el encabezado del conjunto de bits de la biblioteca estándar y crear un typedef para el byte:

typedef bitset<8> BYTE;

NB:dado que WinDef.h define BYTE para el código de Windows, es posible que desee usar algo que no sea BYTE si tiene la intención de apuntar a Windows.

Editar:en respuesta a la sugerencia de que la respuesta es incorrecta. La respuesta no es incorrecta. La pregunta era "¿Existe un tipo de datos 'byte' en C++?". La respuesta fue y es:"No, no hay ningún tipo de datos de bytes en C++", como se respondió.

Con respecto a la posible alternativa sugerida por la cual se preguntó ¿por qué es mejor la alternativa sugerida?

Según mi copia del estándar C++, en ese momento:

"Los objetos declarados como caracteres (char) deberán ser lo suficientemente grandes para almacenar cualquier miembro del juego de caracteres básico de la implementación":3.9.1.1

Lo leí para sugerir que si una implementación del compilador requiere 16 bits para almacenar un miembro del conjunto de caracteres básico, entonces el tamaño de un carácter sería de 16 bits. Que los compiladores de hoy en día tiendan a usar 8 bits para un carácter es una cosa, pero que yo sepa, ciertamente no hay garantía de que sean 8 bits.

Por otro lado, "la plantilla de clase bitset describe un objeto que puede almacenar una secuencia que consta de un número fijo de bits, N". :20.5.1. En otras palabras, al especificar 8 como parámetro de plantilla, termino con un objeto que puede almacenar una secuencia que consta de 8 bits.

Si la alternativa es mejor o no para char, en el contexto del programa que se está escribiendo, por lo tanto, según tengo entendido, aunque puedo estar equivocado, depende de su compilador y sus requisitos en ese momento. Por lo tanto, dependía de la persona que escribía el código, en lo que a mí respecta, determinar si la alternativa sugerida era apropiada para sus requisitos/deseos/necesidades.