unsigned char数组,用于键入stl :: map或其他容器

时间:2017-04-18 09:03:29

标签: c++ stl null

我尝试制作像

这样的地图
 map<unsigned char[16], string> testMap;

并且unsigned char[16]看起来不适合键映射。

但在我的密钥中有NULL,所以我不能使用字符串作为密钥..

示例键:

 01 bc 03 00 50 03 00 00 89 00 10 00 ff ff ff ff

这种密钥也可以使用map.find()

或者我还有其他好的容器吗?

谢谢:)

2 个答案:

答案 0 :(得分:5)

使用构造char数组(不是C-String)字符串的std::string构造函数。这需要两个参数 - 指向数组的指针和长度:

std::string x("pq\0rs"); // Two characters because input assumed to be C-String std::string x("pq\0rs",5); // 5 Characters as the input is now a char array with 5 characters.

这允许嵌入空字符。

答案 1 :(得分:0)

使用STL向量而不是unsigned char数组

注意:

如果您使用的是c ++ 11且字符长度固定,请使用std :: array。 如果你没有固定长度或者没有使用C ++ 11或更高版本,那就去std :: vector