何时使用std :: vector <unsigned char =“”>与std :: vector <char> </char> </unsigned>

时间:2011-09-09 02:03:17

标签: c++ stdvector

其中一个最适合管理可以轻松转换为std :: string并在C函数中传递和使用(即读/写)的字符缓冲区

std::vector<unsigned char> 
std::vector<char>

4 个答案:

答案 0 :(得分:4)

char的签名取决于编译器。 1

它可以代表unsigned charsigned char。表示string时使用的类型取决于编译器 - 因此您应该使用char来实现可移植性和清晰度。如果这还不够,那么在写char说服你时,所需的打字会更少吗? :)

同样,编译器认为string的类型为char *,可以等同于unsigned char *signed char *。如果您要使用string使用std::vector<char>

1 char是唯一具有此行为的类型。


参考

  

1 Is char signed or unsigned by default?

答案 1 :(得分:2)

char与字符串的兼容性高于unsigned char。字符串文字为char[]std::string实际为std::basic_string<char>

答案 2 :(得分:0)

两者都同样适合。如果这些是字符缓冲区,而不是字节,我会使用std :: vector&lt; char&gt;。

您可以使用std :: string(v.begin(),b.end())创建来自任何类型的矢量的字符串;

答案 3 :(得分:0)

charunsigned charsigned char是3种不同的类型。

  • 处理数字时使用unsigned charsigned char
  • 处理字符串时使用常规char

因此,您应该使用char