C++ 何时使用std::vector<;无符号字符>;vs.标准::向量<;char>;
以下哪一项最适合管理字符缓冲区,该缓冲区可以轻松转换为std::string并在C函数中传递和使用(即读/写)C++ 何时使用std::vector<;无符号字符>;vs.标准::向量<;char>;,c++,stdvector,C++,Stdvector,以下哪一项最适合管理字符缓冲区,该缓冲区可以轻松转换为std::string并在C函数中传递和使用(即读/写) std::vector<unsigned char> std::vector<char> std::vector 向量 两者同样适合。如果这些是字符缓冲区,而不是字节,我将使用std::vector 您可以使用std::string(v.begin(),b.end())从这些类型的向量中创建一个字符串 char比无符号char更兼容字符串。字符串文字是cha
std::vector<unsigned char>
std::vector<char>
std::vector
向量
两者同样适合。如果这些是字符缓冲区,而不是字节,我将使用std::vector
您可以使用std::string(v.begin(),b.end())从这些类型的向量中创建一个字符串
char
比无符号char
更兼容字符串。字符串文字是char[]
,std::String
实际上是std::basic_String
,char
,unsigned char
和signed char
是三种不同的类型
- 处理数字时使用
或无符号字符
有符号字符
- 处理字符串时使用常规的
char
因此,您应该使用
char
char
的签名取决于编译器。1
它可以表示无符号字符
或有符号字符
。表示字符串时使用哪种类型取决于编译器-因此,为了便于移植和清晰起见,应该使用char
。如果这还不够的话,那么在编写char
时所需的较少键入是否能说服您呢?:)
同样,编译器认为string
s属于char*
类型,它可以等效于无符号char*
或有符号char*
。如果要使用string
s,请使用std::vector
1char
是唯一具有此行为的类型
工具书类
一,
无符号字符以何种方式与字符串不兼容?换句话说,如果我使用无符号字符来表示字符串,你能给我举例说明会出什么问题吗?我不是在质疑你的答案,我只是想得到一个更好的答案understanding@karimjee:std::string
是std::basic_string
的类型定义std::basic_string
依赖于std::char_traits
,但std::char_traits
仅专用于char
和wchar\u t
。因此,std::basic_string
将不能很好地使用现成的无符号字符
(尽管在实践中,它可以很好地用于大多数现代编译器)。@ildjarn:你给出了OP最初问题的最佳答案