在处理二进制数据块时,您应该在C ++中使用什么数据类型?

时间:2012-02-11 18:54:49

标签: c++

虽然string应该用于处理字符串,但我想知道在处理数据块时你应该在C ++中使用什么结构。

我问这个是因为使用一个参数而不是传递char* datasize_t size(或自定义结构)会更好。

3 个答案:

答案 0 :(得分:12)

std::vector<unsigned char>

或者,最好是

std::vector<std::uint8_t>

(在C ++ 11中,uint8_t可以在<cinttypes>中找到。较旧的编译器,但不是MSVC,可能有C99标题<inttypes.h>。如果您的数据是序列16位单位,使用uint16_t等。)

如果在编译时知道数据块的大小,std::array是合适的;它浪费的空间比vector少。

答案 1 :(得分:4)

STL中有许多容器,而不仅仅是vector。查看并选择适合您情况的内容。

答案 2 :(得分:2)

上述解决方案很好,但考虑到这个解决方案可能会很好:

    STL中的
  1. bitset
  2. SGI
  3. bit_vector
  4. QTL中的
  5. qbitarray