C ++에 '바이트'데이터 유형이 있습니까?
포함 할 헤더 파일이있는 경우
이 코드는 컴파일 오류를 제공합니다.
#include <iostream>
using namespace std;
int main()
{
byte b = 2;
cout << b << endl;
return 0;
}
C ++에는 바이트 데이터 유형이 없습니다. 그러나 항상 표준 라이브러리의 bitset 헤더를 포함하고 바이트에 대한 typedef를 만들 수 있습니다.
typedef bitset<8> BYTE;
NB : WinDef.h가 Windows 코드에 대해 BYTE를 정의한다는 점을 감안할 때 Windows를 대상으로하려는 경우 BYTE가 아닌 다른 것을 사용할 수 있습니다.
편집 : 대답이 틀렸다는 제안에 대한 응답으로. 대답은 틀리지 않습니다. 질문은 "C ++에 '바이트'데이터 유형이 있습니까?"였습니다. 대답은 "C ++에는 바이트 데이터 유형이 없습니다"입니다.
제안 된 가능한 대안과 관련하여 제안 된 대안이 더 나은 이유는 무엇입니까?
당시 C ++ 표준 사본에 따르면 다음과 같습니다.
"문자 (char)로 선언 된 객체는 구현 기본 문자 집합의 구성원을 저장할 수있을만큼 충분히 커야합니다.": 3.9.1.1
컴파일러 구현에서 기본 문자 집합의 구성원을 저장하는 데 16 비트가 필요한 경우 문자의 크기는 16 비트가 될 것이라고 제안했습니다. 오늘날의 컴파일러는 문자에 8 비트를 사용하는 경향이 있지만 내가 말할 수있는 한 그것이 8 비트가 될 것이라는 보장은 확실히 없습니다.
반면, "클래스 템플릿 bitset <N>은 고정 된 수의 비트 N으로 구성된 시퀀스를 저장할 수있는 객체를 설명합니다." : 20.5.1. 즉, 8을 템플릿 매개 변수로 지정하여 8 비트로 구성된 시퀀스를 저장할 수있는 객체로 끝납니다.
작성되는 프로그램의 맥락에서 대안이 char보다 더 나은지 여부는 내가 이해하는 한, 비록 내가 틀렸을지라도 컴파일러와 그 당시의 요구 사항에 달려 있습니다. 따라서 제안 된 대안이 요구 사항 / 원하는 / 필요에 적합한 지 여부를 결정하는 것은 코드를 작성하는 개인에게 달려 있습니다.
아니요, byte
C ++ 에는 " " 라는 유형이 없습니다 . 당신이 대신 원하는 것은 unsigned char
(당신이, 정확하게 8 개 비트를 필요로하는 경우, 또는 uint8_t
에서 <cstdint>
, C부터 + 11 ). 참고 char
뜻으로, 반드시 정확한 대안이없는 signed char
일부 컴파일러와 unsigned char
다른 사람.
예, 있습니다 std::byte
(에서 정의 됨 <cstddef>
).
C ++ 17에서 도입했습니다.
Windows를 사용하는 경우 WinDef.h에 다음이 있습니다.
typedef unsigned char BYTE;
사용하여 C++11
수동으로 정의 바이트 유형에 대한 좋은 버전이 있습니다 :
enum class byte : std::uint8_t {};
최소한 GSL이하 는 일입니다.
시작 C++17
(거의)이 매우 버전과 표준에 정의되어있다 std::byte
(모두 감사 닐 Macintosh)를 선택합니다.
아니요,하지만 C ++ 11부터 [u] int8_t가 있습니다.
C ++ 98, C ++ 11 이상과 호환되는 byte_lite 도 있습니다 .
참고 URL : https://stackoverflow.com/questions/20024690/is-there-byte-data-type-in-c
'programing' 카테고리의 다른 글
String.Contains를 대소 문자를 구분하지 않는 방법? (0) | 2020.10.31 |
---|---|
jQuery를 사용하여 AJAX 응답 (json)에서 테이블 행 작성 (0) | 2020.10.31 |
Swift-여러 기준으로 객체 배열 정렬 (0) | 2020.10.31 |
Java Generics : 목록, 목록 (0) | 2020.10.31 |
범용 iPhone / iPad 앱에 대해 두 아이콘을 어떻게 지정합니까? (0) | 2020.10.31 |