gpt4 book ai didi

c++如何创建包含大小未初始化字节的std::string?

转载 作者:行者123 更新时间:2023-12-01 14:39:32 28 4
gpt4 key购买 nike

我需要一个 std::string size字节,在构造它之后,我将在从它读取之前写入该字符串中的每个字节,因此空初始化字符串是对 CPU 的浪费,这是有效的:

std::string s(size,0);

但只是有点浪费,基本上就像使用 calloc()当我只需要 malloc() ,所以问题是,我如何构造一个由 X 个未初始化字节组成的字符串?

(使用 Reserve()+push 不是一种选择,因为我将字符串提供给 C-api,使用 char*,size 进行实际初始化)

编辑:此线程似乎与相同的问题/相关(但使用 vector 而不是字符串): Value-Initialized Objects in C++11 and std::vector constructor

最佳答案

你不能用 std::string .但它可以通过不同的方式实现,比如使用 std::unique_ptr<char[]> .

auto pseudo_string = std::unique_ptr<char[]>(new char[size]);

或者如果你的编译器支持 C++20
auto pseudo_string = std::make_unique_for_overwrite<char[]>(size);

关于c++如何创建包含大小未初始化字节的std::string?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61382319/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com