std :: stringrink_to_fit破坏字符串

问题描述 投票:0回答:2

所以我有一个std::string对象,该对象由C-Style函数填充,例如strcpy。该函数可以返回10-100个字符之间的任意位置,因此我在字符串中保留了100个字符。

但是使用&buf[0]有效,但是当我尝试shrink_to_fit()时,字符串损坏了。如何避免这种情况?

std::string buf;
buf.reserve(100);
//example of the function that can write to a buffer with 10-100 characters.
strcpy(&buf[0], "Hello");
buf.shrink_to_fit();
std::cout << buf << std::endl;
c++ string stl buffer
2个回答
3
投票

reserve()设置字符串的capacity,而不是其sizeshrink_to_fit()缩小capacity以匹配size。但是您的size为0。因此,在调用shrink_to_fit()之后,该字符串实际上为空,没有损坏。

© www.soinside.com 2019 - 2024. All rights reserved.