其中一个最适合管理可以轻松转换为std :: string并在C函数中传递和使用(即读/写)的字符缓冲区
std::vector<unsigned char>
std::vector<char>
答案 0 :(得分:4)
char
的签名取决于编译器。 1
它可以代表unsigned char
或signed char
。表示string
时使用的类型取决于编译器 - 因此您应该使用char
来实现可移植性和清晰度。如果这还不够,那么在写char
说服你时,所需的打字会更少吗? :)
同样,编译器认为string
的类型为char *
,可以等同于unsigned char *
或signed char *
。如果您要使用string
使用std::vector<char>
。
1 char
是唯一具有此行为的类型。
答案 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)
char
,unsigned char
和signed char
是3种不同的类型。
unsigned char
或signed char
。char
。因此,您应该使用char
。