c++ - 使用字符串作为缓冲容器

标签 c++ string stdstring

我正在使用从网络接收的报价消息作为 uint8_t 数组的库,我可以使用 std::string 作为这些缓冲区的容器吗?

uint8_t *buffer = ...;
size_t length = ...;

std::string msg = std::string(buffer, length);

这个构造函数导致编译错误?如果我使用 reinterpret_cast 将缓冲区转换为 char*,它会编译,但它是否定义明确且合法?

最佳答案

您可以安全地转换为 char*,因为标准规定 char* 可以作为任何其他类型的别名。

// this would be fine
std::string msg(reinterpret_cast<char*>(buffer), length);

关于c++ - 使用字符串作为缓冲容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55324498/

相关文章:

c++ - 具有非模板类型参数的模板函数的重载解析

java - 从字符串中提取最接近的句子

c++ - 比较两个 vector 字符串的相似性 C++

c++ - 大写字母

c++ - 在 C++11 之前的版本中将字符串列表填充到 vector 中

c++ - 定义类成员函数时收到错误

c++ - 从 Visual C++ 调用 Delphi DLL

java - OpenCV(JavaCV)与 OpenCV(C/C++ 接口(interface))

c - 使用子字符串的转换规则转换字符串

c++ - 返回字符串与通过引用传递字符串以更新值