在c ++中
当我宣布
时string string1;
然后我无法按照
中的索引进行分配string1[0] = 'x';
但是如果我先把string1 =“somestring”;然后我就可以通过索引使用赋值。
string = "";
不起作用
所以我想知道为什么会这样。我以为std :: string应该具有索引功能。
答案 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/