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

时间:2016-11-28 09:32:33

标签: c++ arrays stdstring setvalue

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

std::string s;

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

s[0] = 'a';

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

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

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

2 个答案:

答案 0 :(得分:4)

您可以使用std::string::resize()调整其大小并在以后填写:

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

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

答案 1 :(得分:1)

也许您可以尝试像

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

因此,如果需要,字符串可以自动扩展。 (修改为更好的签名)