std::通过索引进行字符串赋值似乎不起作用

std::string assignment through index doesn't seem to work

本文关键字:赋值 不起作用 字符串 索引 std      更新时间:2023-10-16

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/