簡體   English   中英

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

[英]c++ how to create std::string containing size uninitialized bytes?

我需要一個size字節的std :: string,在構造它之后我將在讀取它之前寫入該字符串中的每個字節,因此對字符串進行空初始化是浪費cpu,這有效:

std::string s(size,0);

但這只是有點浪費,基本上就像在我只需要malloc() calloc()一樣,所以問題是,我如何構造一串 X 未初始化字節?

(使用reserve()+push 不是一個選項,因為我將字符串提供給C-api 使用char*,size來進行實際初始化)

編輯:這個線程似乎與相同的問題/相關(但使用向量而不是字符串): C++11 和 std::vector 構造函數中的值初始化對象

你不能用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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM