Я хочу использовать std :: string для динамической обработки строк. Данные добавляются и добавляются в строку, иногда я не хочу устанавливать значение для символа с индексом i. Я не знаю, сколько символов будет добавлено в строку. Что-то вроде динамического сбора в .NET.
Когда я выделяю std :: string в C ++
std::string s;
и попробуйте установить элемент с индексом i для него:
s[0] = 'a';
Это будет из-за ошибки, связанной с памятью.
Глупый способ — инициализировать его существующими данными и заменить их позже:
std::string s = generate1000chars();
s[2] = 'c';
Есть ли способ инициировать строку, которая позволяет манипулировать символом с индексом i, как массив символов?
Может быть, вы можете попробовать функцию обертки, как
std::string& SetChar(std::string& str, char ch, size_t index)
{
if (str.length() <= index)
{
str.resize(index + 1);
}
str[index] = ch;
return str;
}
Так что строка может автоматически расширяться при необходимости.
(Модифицировано для лучшей подписи)
Ты можешь использовать std::string::resize()
изменить его размер и заполнить позже:
std::string s;
s.resize(1000);
//later..
s[2] = 'c';