std::通过索引进行字符串赋值似乎不起作用
std::string assignment through index doesn't seem to work
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/
相关文章:
- if 子句中的赋值不起作用
- 检查字符串中的小写字符或空格.布尔值不起作用
- 赋值不起作用,但带有取消引用运算符的地址起作用?
- 更改生成文件中变量的值不起作用
- 更新对象中的值不起作用
- 重新赋值在运算符中不起作用 = 重载
- C++开关语句.默认值不起作用
- C++中的变量赋值(使用libpng)不起作用
- 交换堆栈的 2 个值不起作用
- C++:STL 映射,插入新值不起作用
- C++ int 赋值不起作用
- C++赋值 boost::p ython::object 不起作用。为什么?
- 字符赋值数组不起作用
- QString到std::string到const char*的转换在赋值中不起作用
- 为什么函数头的更改会导致指针赋值不起作用
- 使用c++数学比较函数返回值不起作用
- 返回智能指针并为其分配值不起作用
- 对指向std::list类型的共享指针赋值不起作用
- 如何从标准字符串 (c_str()) 中设置字符 * 值不起作用
- 直接设置结构 tm 属性的值不起作用