in c++
当我声明
string string1;
就不能像
那样按索引赋值string1[0] = 'x';
然而,如果我首先输入string1 = "somestring";那么我就可以通过索引使用赋值了。
string = "";
不工作
所以我想知道为什么会这样。我认为std::string应该有索引功能
默认构造字符串时,它是空的。它的字符数组中没有元素,所以[0]
不存在。如果你给它一个字符串来构造它,比如"somestring"
,它包含那个字符串,第零索引是s
。
当你有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/