初始化并使用 C++ std::string 作为 char 数组

Init and use C++ std::string as array of char

我想使用 std::string 进行动态字符串处理。数据追加并附加到一个字符串,有时我不想为索引 i 处的字符设置值。我不知道将向字符串添加多少个字符。类似于 .NET 中的动态集合。 当我在 C++

中分配 std::string
std::string s;

并尝试在索引 i 处为其设置元素:

s[0] = 'a';

它将通过与内存相关的错误。 一个愚蠢的方法是用现有数据初始化它并在以后替换它们:

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

有没有办法初始化一个允许在索引 i 处操作字符的字符串,如 char 数组?

您可以使用std::string::resize()调整大小,稍后填写:

std::string s;
s.resize(1000);

//later..
s[2] = 'c';

也许你可以试试像

这样的包装函数
std::string& SetChar(std::string& str, char ch, size_t index)
{
    if (str.length() <= index)
    {
        str.resize(index + 1);
    }
    str[index] = ch;
    return str;
}

以便字符串可以根据需要自动扩展。 (修改为更好的签名)