如何将 std::move 堆分配的 char 数组到 std::string

Har*_*rry 1 c++

是否可以将std::move堆分配的 char 数组(>= 10000 大小)转换为std::string. 我试图阻止将(std::string str(c_arr))char 数组数据复制到堆分配的std::string位置。c_arr

eer*_*ika 6

如何将 std::move 堆分配的 char 数组到 std::string

通过将 char 数组分配为另一个 std::string 的一部分。例子:

std::size_t char_count = 10000;
std::string str1(char_count, '\0');
char* c_arr = str1.data();

std::string str2 = std::move(str1);
Run Code Online (Sandbox Code Playgroud)

如果堆分配的 char 数组最初不是由 std::string 创建的,那么您不能将其移动到 std::string 中。在这种情况下,您必须复制该数组。或者,如果您无法使用 std::string 创建原始缓冲区,那么您可以考虑根本不尝试创建 std::string。