特定
const void * data = ...;
size_t size = ...;
std::string message(???)
Run Code Online (Sandbox Code Playgroud)
如何std::string从原始指针构造数据和数据大小?data可能包含NUL字符.
字符串构造函数可以使用char*,包含\0,如果size是正确的.
使用s指向的字符串的第一个计数字符构造字符串.s可以包含空字符.字符串的长度是count.如果s未指向CharT的至少count个元素的数组,则行为未定义.
所以只需使用
std::string message(static_cast<const char*>(data), size);
Run Code Online (Sandbox Code Playgroud)
你可以强制转换data为const char*,然后使用std::string两个迭代器构造函数.
const char* sdata = static_cast<const char*>(data);
std::string message(sdata, sdata + size);
Run Code Online (Sandbox Code Playgroud)
请注意,您只需要一个字节缓冲区,使用它可能更简单,更清晰std::vector<unsigned char>.
const unsigned char* sdata = static_cast<const unsigned char*>(data);
std::vector<unsigned char> message(sdata, sdata + size);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1804 次 |
| 最近记录: |