通过索引的std :: string赋值似乎不起作用

时间:2014-06-07 20:28:21

标签: c++ string indexing stdstring

在c ++中

当我宣布

string string1;

然后我无法按照

中的索引进行分配
string1[0] = 'x';

但是如果我先把string1 =“somestring”;然后我就可以通过索引使用赋值。

string = ""; 

不起作用

所以我想知道为什么会这样。我以为std :: string应该具有索引功能。

2 个答案:

答案 0 :(得分:2)

当你默认构造一个字符串时,它是空的。 char数组没有元素,因此[0]不存在。如果你通过给它一个字符串来构造它,比如"somestring",它就包含那个字符串,而第零个索引是s

答案 1 :(得分:0)

当你有string string1;时,你声明一个空字符串。在通过索引访问字符串的字符之前,必须为其分配值。

它不会为string1[0] = 'x';创建一个空字符串的索引0,但如果字符串中已存在字符,则允许您更改索引0处的值。

您可以创建一个预先分配的'通过构造函数排序的字符串: string (size_t n, char c);其中n是要复制的字符数,c是填充字符串的字符。因此,例如,您可以使用std::string string1(5, ' ');创建一个填充5个空格的字符串。然后,您可以使用0-4中的任何索引,以便将其他值放入字符串中(如原始问题中所示 - string1[0] = 'x';)。 http://www.cplusplus.com/reference/string/string/string/