난 임의의 이진 데이터의 블록을 나타내는 void *
을 사용하는 ZeroMQ 라이브러리와 함께 일하고 있어요. 그러나 std::vector
을 사용하여이 블록을 복사하고 이동할 수 있습니다. 원시 바이트를 나타내는 std::vector
을 만드는 데 선호되는, 관용적 인 방법은 무엇입니까? 현재 std::vector<unsigned char>
을 사용하고 있지만 다른 사람들이 내 코드를 이해하고 있는지 확인하고 싶습니다.std :: vector에서 raw 바이트를 표현하는 가장 좋은 방법은 무엇입니까?
2
A
답변
8
어느
std::vector<unsigned char>
또는
#include <cstdint>
std::vector<std::uint8_t>
모두
나에게 잘 보인다.+2
8 비트 바이트가없는 시스템에는'uint8_t'가 존재하지 않습니다. 'uint_least8_t'가 더 나은 선택 일지 모르지만'unsigned char'가 최선의 선택입니다. –
+0
이 솔루션은 원시 데이터를 저장하는 데 널리 사용되는 것으로 보입니다. 저에게 왜 "int8_t"가 아닌 "uint8_t"를 사용해야하는지 명확하지 않습니다 - 아무도 이점을 알고 있습니까? Java는 데이터 유형에만 서명 했으므로 C++에서 unsigned int를 사용하는 이유는 무엇입니까? –
0
데이터의 성격을 모르는 경우 unsigned char
은 지저분 해지지 않고 표현할 수있는 가장 작은 비트입니다. 따라서 임의의 종류의 임의의 메모리 블록에 대한 일반적인 유형입니다.
그래서 벡터는 완벽하게 멋지게 보입니다.
관련 문제
- 1. Erlang에서 C 배열을 표현하는 가장 좋은 방법은 무엇입니까?
- 2. std :: remove가 std :: vector에서 제거되지 않습니다.
- 3. std :: vector.reserve() 이후에 std :: vector에서 재 할당
- 4. std :: vector에서 여러 객체 지우기?
- 5. std :: vector에서 메모리를 해제 하시겠습니까?
- 6. 부호없는 char std :: vector에서 unsigned char []?
- 7. CUDA 코드로 입자를 표현하는 가장 좋은 방법
- 8. 포맷 된 텍스트를 메모리에 표현하는 가장 좋은 방법은 무엇입니까? C++
- 9. 디자인 문서에서 XML 파일을 표현하는 가장 좋은 방법은 무엇입니까?
- 10. 스칼라에서 값에 대한 제약 조건을 표현하는 가장 좋은 방법은 무엇입니까?
- 11. 이 알고리즘을 시각적으로 표현하는 가장 좋은 방법은 무엇입니까?
- 12. XML을 사용하여 트리를 표현하는 가장 좋은 방법은 무엇입니까?
- 13. 데이터베이스에서 다 - 대 - 다 관계를 표현하는 가장 좋은 방법은 무엇입니까?
- 14. UML 클래스 다이어그램에서 네트워크 연결을 표현하는 가장 좋은 방법은 무엇입니까?
- 15. 그리드의 셀 표시 형식을 표현하는 가장 좋은 방법은 무엇입니까?
- 16. CSS에서 100 %의 1/3을 표현하는 가장 좋은 방법은 무엇입니까?
- 17. 표에서 도구 설명을 표현하는 가장 좋은 방법
- 18. RAW 전자 메일 메시지를 서버로 전송해야합니다. 가장 좋은 방법은 무엇입니까?
- 19. std :: strings를 비교하는 가장 좋은 방법
- 20. 배열에서 회전 큐브를 표현하는 가장 좋은 방법
- 21. 컬렉션의 데이터를 표로 표현하는 가장 좋은 방법
- 22. iPad에서 트리 구조를 표현하는 가장 좋은 방법
- 23. 자바에서 스페인 주소를 표현하는 가장 좋은 방법
- 24. 동적 메모리를 std :: vector에서 어떻게 관리합니까?
- 25. boost :: ptr_vector를 항상 std :: vector에서 사용해야합니까?
- 26. std :: vector에서 무작위 삭제가 어떻게 std :: list보다 빠릅니까?
- 27. std :: vector에서 요소 제거 <std::string>>
- 28. std :: vector가 배열을 다시 부착했는지 확인하는 가장 좋은 방법은 무엇입니까?
- 29. 가장 좋은 방법은
- 30. Java의 파일 중간에 바이트를 쓰는 가장 좋은 방법
'서명되지 않은 문자'는 정상입니다. 옥텟 부분을 강조하고 싶다면'uint8_t'를 사용할 수도 있습니다. –
나는'typedef uint8_t byte;'를 만들거나 어쩌면 아무것도 할 수없는 클래스를 만들 수도있다. (byte togeather를 추가하지 않음) –
ZeroMQ 자체가 "as a char"또는 "unsigned char"데이터를 읽는지 여부를 지정합니다. 그렇지 않다면 unsigned char는 괜찮을 것이다. 'char'를 지정하면 라이브러리가 기대하는 것을 제공한다는 것을 강조하기 위해 그것을 사용하고자 할 수 있습니다. 어쨌든 차이가 없어야합니다. –