簡體   English   中英

從std :: string中提取const char而不復制?

[英]Extract const char from std::string without copying?

我想知道是否有某種方法告訴std::string 釋放它正在使用的char*

我想在std::string某個地方它有一個char*類型的字段,我想要一些類似的方法:

const char* std::string::release() {
    const char* result = __str;
    __size = 0;
    __capacity = INITIAL_CAPACITY_WHATEVER;
    __str = new char[INITIAL_CAPACITY_WHATEVER];
    return result;
}

不是復制內容是一個問題,或者會影響我的表現,我只是在浪費時間復制我剛剛要刪除的東西時感到不舒服。

如果您使用的是C ++ 11,則可以使用std::move 一個字符串對象的內容移動到另一個字符串對象。 這避免了復制的開銷。

std::string s1 = "hello";
std::string s2(std::move(s1));

但是,您無法直接取消內部char*緩沖區與std::string實例的關聯。 std::string對象擁有內部char*緩沖區,並在調用析構函數時嘗試釋放它。

暫無
暫無

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

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