C++中的std::string
类包含了多种构造函数,可以方便地初始化字符串。以下是一些常见的std::string
构造函数:
- 默认构造函数
std::string();
创建一个空字符串,即长度为0的字符串。 2. 从C风格字符串构造
std::string(const char* s);
使用以’\0’结尾的C风格字符串s
来初始化std::string
对象。
3. 指定长度的C风格字符串构造
std::string(const char* s, size_t n);
使用C风格字符串s
的前n
个字符来初始化std::string
对象。这里不需要以’\0’结尾。
4. 复制构造函数
std::string(const std::string& str);
通过复制另一个std::string
对象str
来初始化新的std::string
对象。
5. 子字符串构造
std::string(const std::string& str, size_t pos, size_t len = npos);
从str
中提取一个子字符串,从位置pos
开始,长度为len
。如果未指定len
或者len
大于str
的剩余长度,则子字符串将一直扩展到str
的末尾。
6. 填充构造函数
std::string(size_t n, char c);
创建一个长度为n
的字符串,其中每个字符都被初始化为c
。
7. 通过迭代器构造
templatestd::string(InputIt first, InputIt last);
使用由迭代器first
和last
指定的字符范围来初始化字符串。注意,这是一个模板构造函数,可以接受任何类型的迭代器。
8. 移动构造函数
std::string(std::string&& str) noexcept;
通过“移动”而非复制的方式,从另一个std::string
对象str
来初始化新的std::string
对象。这通常会使得原始字符串变为空,并且操作是高效的。
9. 初始化列表构造函数
std::string(std::initializer_listil);
使用一个初始化列表il
来初始化字符串。例如:std::string s = {'a', 'b', 'c'};
。
以上就是C++中std::string
类的一些常见构造函数。