我想使用std :: string进行动态字符串处理。数据被附加并附加到字符串,有时我不想在索引i处设置字符的值。我不知道将多少字符添加到字符串中。像.NET中的动态集合。 当我在C ++中分配std :: string时
std::string s;
并尝试在索引i处设置元素:
s[0] = 'a';
它将通过与内存相关的错误。 一种愚蠢的方法是使用存在的数据初始化它并在以后替换它们:
std::string s = generate1000chars();
s[2] = 'c';
有没有办法初始化一个允许在索引i处操作字符的字符串,比如char数组?
答案 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;
}
因此,如果需要,字符串可以自动扩展。 (修改为更好的签名)