不要用memcpy赋值内容到std::string中

最近写代码的时候,用上了copilot,但是我发现有一天它给了我一个有明显错误的代码。 我要实现的功能是从字节流中反序列化出我的数据结构,其中有一部分是需要反序列化到std::string中,copilot给我的代码是:

// 我需要从char *data_recv中
void deserialize(char *data_recv, int len) {
    std::string sql;
    memcpy(sql.data(), data_recv, len);
}

这一段代码有很明显的问题,使用memcpystd::string赋值时,没有调用std::string的构造函数,直接向std::string底层的字符串地址char *写入数据。

不能全信copilot给的代码啊