Инициируйте и используйте C++ std::string в качестве массива char

Я хочу использовать std:: string для динамической обработки строк. Данные добавляются и добавляются в строку, иногда я не хочу устанавливать значение для символа с индексом i. Я не знаю, сколько символов будет добавлено в строку. Что-то вроде динамического сбора в.NET. Когда я выделяю std:: string в C++

std::string s;

и попробуйте установить элемент с индексом i для него:

s[0] = 'a';

Это будет из-за ошибки, связанной с памятью. Глупый способ - инициализировать его существующими данными и заменить их позже:

std::string s = generate1000chars();
s[2] = 'c';

Есть ли способ инициировать строку, которая позволяет манипулировать символом с индексом i, как массив символов?

2 ответа

Решение

Может быть, вы можете попробовать функцию обертки, как

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';
Другие вопросы по тегам