2014-01-21 3 views
6

Я прочитал здесь много вопросов о том, как полностью очистить строку (например, сбросить емкость, освободить память). Мой вопрос, хотя и является полной противоположностью; существует ли какой-либо надежный способ сброса строки (длины), при этом гарантируется сохранение ее емкости?Сброс строки при сохранении емкости

Пример: повторное использование временной строки в цикле.

Вероятно, это произойдет по умолчанию, если я что-то вроде

str.clear() 
str.reserve(256) 

в каждой итерации цикла, по крайней мере при использовании Visual Studio в соответствии с ответом на этот пост: Specific behaviour of std::string on visual studio?

Но опираясь на " вероятно "кажется немного рискованным.

ответ

9

Согласно http://en.cppreference.com/w/cpp/string/basic_string/clearclear() не освобождает внутренний буфер и сохраняет capacity нетронутым.

+0

Hah, так оно и говорит. Думаю, мне даже не нужно звонить str.reserve (256), тогда он будет сохранен. Я должен проверить документацию лучше, прежде чем отправлять здесь ... – DaedalusAlpha

+0

«Документация» будет стандартом ISO, а не веб-страницей ... –

Смежные вопросы