所以我有一个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;
reserve()
设置字符串的capacity
,而不是其size
。 shrink_to_fit()
缩小capacity
以匹配size
。但是您的size
为0。因此,在调用shrink_to_fit()
之后,该字符串实际上为空,没有损坏。