c++ - 如何在 C++ 中将 unsigned char* 转换为 std::string?

我有 unsigned char*,想把它转换成 std::string。你能告诉我最安全的方法吗?

最佳答案

您只需要将 unsigned char 转换为 char,因为 string 类没有接受 的构造函数无符号字符:

unsigned char* uc;
std::string s( reinterpret_cast< char const* >(uc) ) ;

但是,如果您的字节数组包含空值,您将需要在构造函数中使用长度参数,就像您不这样做一样,只有部分数组将在字符串中结束(数组直到第一个空值)

size_t len;
unsigned char* uc;
std::string s( reinterpret_cast<char const*>(uc), len ) ;

https://stackoverflow.com/questions/1673445/

相关文章:

C++ 异常 - 将 c-string 作为异常抛出是不是很糟糕?

c++ - 访问另一个子类中基类的 protected 成员

c++ - C 和 C++ 中的 1LL 或 2LL 是什么?

c++ - 如何在编译时检查结构的大小?

c++ - OSX - 用通过 Homebrew 安装的 4.9 替换 gcc 版本 4.2.1

c++ - 我收到错误 "invalid use of incomplete type ' 类映射'

c++ - 为什么 std::fstream 类不采用 std::string?

c++ - std::map 如何提供常量 size() 操作?

c++ - std::pair 的顺序是否明确?

c++ - 我不明白这个 C/C++ 笑话