std string构造函数
`std::string`是C++标准库中定义的一个容器类,用于存储和操作字符串。它提供了多个构造函数,允许我们以不同的方式创建一个`std::string`对象。
首先,我们可以通过将字符数组作为参数传递给构造函数来创建一个`std::string`对象。这可以通过以下方式实现:
```
const char* str = "Hello, World!";
std::string s(str);
```
在这个例子中,我们将一个C风格的字符串`str`传递给了`std::string`的构造函数。构造函数会使用`str`的内容来初始化新创建的`std::string`对象`s`。
我们还可以使用`std::initializer_list`这个特殊的类型来初始化`std::string`对象。`std::initializer_list`允许我们初始化一个容器类对象,同时提供多个值作为初始化元素。下面是一个例子:
```
std::string s = {'H', 'e', 'l', 'l', 'o'};
```
在这个例子中,我们使用了花括号`{}`来创建了一个`std::initializer_list`,其中包含了字符'H', 'e', 'l', 'l', 'o'。然后,我们将这个`std::initializer_list`作为参数传递给了`std::string`的构造函数,从而创建了`std::string`对象`s`。
此外,`std::string`还提供了一个接受两个迭代器作为参数的构造函数。这允许我们使用其他容器中的元素来初始化`std::string`对象。例如:
```
std::vector<char> vec = {'H', 'e', 'l', 'l', 'o'};
std::string s(vec.begin(), d());
```
字符串截取对象在这个例子中,我们使用了`std::vector`容器中的元素来初始化了一个`std::string`对象。我们将`vec.begin()`和`d()`分别作为参数传递给了`std::string`的构造函数,以表示我们要用`vec`中的所有元素来创建`std::string`对象。
除了上面提到的构造函数,`std::string`还提供了一些其他的构造函数。例如,我们可以指定初始化字符串的长度和默认字符:
```
std::string s(10, 'A');
```
在这个例子中,我们创建了一个由10个字符'A'组成的`std::string`对象`s`。
还有一种构造函数允许我们从另一个`std::string`对象中截取一部分字符来创建一个新的`std::string`对象。这可以通过提供起始位置和长度来实现:
```
std::string s("Hello, World!");
std::string sub_str(s, 7, 5);
```
在这个例子中,我们从`s`中提取了从索引位置7开始的5个字符,创建了一个名为`sub_str`的新的`std::string`对象。
总结来说,`std::string`提供了多个构造函数,使我们能够以不同的方式创建一个字符串对象。我们可以使用字符数组、`std::initializer_list`、迭代器、长度和默认字符、或从另一个`std::string`对象中截取来初始化一个`std::string`对象。这给予了我们更大的灵活性,以适应不同的需求。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。