是否可以从 std::string 中获取内存(就像 string move ctor 那样)?

Is it possible to take memory from std::string(like string move ctor does)?

如果我的内部 class 是我自己的 vector<char> 版本(我控制源代码),为了举例,我不能将其更改为 std::string有没有办法从 std::string 窃取内存,就像 std::string 的移动构造函数一样。

所以像这样:

std::string str{"abcdefghijklmnopqrstu"};
MyVectorCharClass mvc(std::move(str)); // Constructor takes memory from str

我想我听说过一些将 .release() 添加到 std::stringstd::vector 的未来提议,但我说的是现在。

没有。 std::string 管理的缓冲区是它私有的。您可以通过 &str[0] 访问它,但 string 仍将拥有它并在它超出范围时销毁它。您无法告诉 str 它现在拥有一个不同的缓冲区,或将其基础缓冲区设置为 nullptr,或任何其他方式使其成为 not delete 那个缓冲区。

那是 std::string 的工作。它拥有自己的缓冲区并且不会放弃它。