根据这些问题的回答中所述:
但是现在是否有一种合法的方法来设置字符串的大小,使其与缓冲区内(以空字符结尾的)内容长度相同?类似于这样的代码:
这是一种非常不美观的滥用
有没有一种好的方法来做到这一点?也许不是保留而是 调整大小 然后调用
.. 在C++11中,应该可以通过以下方式调用接受char指针以存储输出的C API函数:
str::string str;
str.reserve(SOME_MAX_VALUE);
some_C_API_func(&str[0]);
但是现在是否有一种合法的方法来设置字符串的大小,使其与缓冲区内(以空字符结尾的)内容长度相同?类似于这样的代码:
str.set_size(strlen(&str[0]));
这是一种非常不美观的滥用
std::string
的方法,但我无法在堆栈上创建临时 char
缓冲区,因此我必须在堆中创建缓冲区并在之后销毁它(这是我想避免的)。有没有一种好的方法来做到这一点?也许不是保留而是 调整大小 然后调用
erase()
会做到这一点,但感觉不太好。
resize
吗? - Kerrek SBresize()
似乎会修改内容。至少当我使用reserve()
缓冲区并在之后使用resize()
时,字符串之后为空。它似乎与resize(SOME_MAX_VALUE)
一起使用。如果有人说服我这是最复杂的方法,我很高兴 :) - frans