我正在使用ZeroMQ庫,它使用void *
來表示任意二進制數據塊。不過,我想用std::vector
複製並移動這些塊。 std::vector
代表原始字節的首選慣用方法是什麼?我目前使用的是std::vector<unsigned char>
,但我想確保我的代碼對其他人有意義。在std :: vector中表示原始字節的最佳方法是什麼?
2
A
回答
8
要麼
std::vector<unsigned char>
或
#include <cstdint>
std::vector<std::uint8_t>
似乎都沒什麼問題。
+2
'uint8_t'在沒有8位字節的系統上不存在。 'uint_least8_t'可能是更好的選擇,但'unsigned char'是最好的選擇。 –
+0
該解決方案似乎被廣泛用於存儲原始數據。對我而言,不清楚爲什麼要使用「uint8_t」而不是「int8_t」 - 是否有人知道優勢? Java只有簽名數據類型,所以爲什麼要在C++中使用unsigned int? –
0
如果你不知道數據的性質,unsigned char
是你可以代表的最小塊,而不會混亂。因此它是任何類型的任意內存塊的常見類型。
所以你的矢量看起來非常好,它的方式。
相關問題
- 1. std :: vector的resize方法背後的設計原理是什麼?
- 2. 將原始數組傳遞給std :: vector的最快方法
- 3. 什麼是把一些數據放在一個std :: vector中的最佳方式
- 4. 什麼是原始表示?
- 5. 在XmlDocument中排序節點的最佳方法是什麼? (.Net)
- 6. 穩定垂直文字節奏的最佳方法是什麼?
- 7. 初始化std :: array類的繼承成員var的最佳方法是什麼?
- 8. 什麼是在Web表單中顯示XML的最佳方式?
- 9. 在Django模型中表示URL的最佳方式是什麼?
- 10. 在Avro中表示UUID的最佳方式是什麼?
- 11. 在Erlang中表示C數組的最佳方式是什麼?
- 12. 表示軟件系統的最佳建模方法是什麼?
- 13. 清除std :: vector數組的最佳方法?
- 14. std :: vector <T> :: clear()是什麼時候T是一個原始類型?
- 15. 在C++中處理大數字的最佳方法是什麼?
- 16. 在C++中標記字符串的最佳方法是什麼?
- 17. 什麼是* plot * std :: vector <double>的簡單/最簡單的方法?
- 18. 在Matlab中預分配表格的最佳方法是什麼?
- 19. 在SQL Server中分區大表的最佳方法是什麼?
- 20. 在SQLite表中更改鍵的最佳方法是什麼?
- 21. 在Python中移動列表的最佳方法是什麼?
- 22. 在WPF中渲染圖表的最佳方法是什麼?
- 23. 在Jira中更新原始估價的最佳做法是什麼?
- 24. 推入std :: vector時std :: unique_ptr的正確用法是什麼?
- 25. 評論的最佳方法是什麼?
- 26. ANTLR4的最佳方法是什麼?
- 27. 爲什麼在C++ std :: vector中沒有pop_front方法?
- 28. 編輯節點庫文件的最佳方法是什麼?
- 29. 使用原始指針從矢量中刪除std :: unique_ptr的最佳方法?
- 30. 從原始數據創建std :: vector
'unsigned char'確定。如果你想強調八位字節部分,你也可以使用'uint8_t'。 –
我會'typedef uint8_t byte;',或者甚至可以創建一個你無法做任何事情的類。 (不添加字節togeather) –
是否ZeroMQ本身指定是否讀取數據「作爲字符」或「作爲無符號字符」?如果沒有,那麼unsigned char應該沒問題。如果它指定了'char',那麼你可能想用它來強調你正在提供圖書館所期望的。無論如何它不應該有任何區別。 –