c++ string 的构造函数
时间: 2024-03-26 20:33:40 浏览: 14
C++中的string类是一个非常常用的字符串处理类,它提供了多种构造函数来创建和初始化字符串对象。下面是几种常见的构造函数:
1. 默认构造函数:string(),创建一个空字符串对象。
2. 字符串字面值构造函数:string(const char* str),使用C风格的字符串字面值来初始化字符串对象。
3. 复制构造函数:string(const string& str),使用另一个字符串对象来初始化当前对象。
4. 子串构造函数:string(const string& str, size_t pos, size_t len),使用另一个字符串对象的子串来初始化当前对象,从位置pos开始,长度为len。
5. 重复字符构造函数:string(size_t n, char c),创建一个包含n个重复字符c的字符串对象。
6. 范围构造函数:string(InputIt first, InputIt last),使用迭代器指定的范围内的字符来初始化字符串对象。
7. 移动构造函数:string(string&& str),使用右值引用来初始化当前对象,通常用于性能优化。
这些构造函数提供了不同的方式来创建和初始化string对象,可以根据具体的需求选择合适的构造函数来使用。
相关问题
c++ string 构造函数原型
C++ 中的 c string 构造函数原型如下:
```cpp
char* strcpy( char* dest, const char* src );
```
该构造函数用于将源字符串 `src` 复制到目标字符串 `dest` 中,并返回目标字符串 `dest` 的首地址。在复制过程中,会将 `src` 中的空字符(`\0`)一并复制到 `dest` 中,保证复制后的字符串以空字符结尾,形成一个以空字符结尾的字符串。
C++ String类构造函数实现
C++标准库中的String类有多个构造函数,下面给出其中的一些实现方式:
1. 默认构造函数
```c++
string::string()
{
// 分配一个字节的空间,存储空字符
char* data = new char[1];
*data = '\0';
// 初始化成员变量
_capacity = 0;
_size = 0;
_data = data;
}
```
2. 指定长度的构造函数
```c++
string::string(size_t count, char ch)
{
// 分配 count + 1 个字节的空间,存储 count 个字符和一个空字符
char* data = new char[count + 1];
for (size_t i = 0; i < count; ++i)
{
data[i] = ch;
}
data[count] = '\0';
// 初始化成员变量
_capacity = count;
_size = count;
_data = data;
}
```
3. 字符串构造函数
```c++
string::string(const char* s)
{
// 统计字符串长度
size_t count = 0;
while (s[count] != '\0')
{
++count;
}
// 分配 count + 1 个字节的空间,存储字符串和一个空字符
char* data = new char[count + 1];
for (size_t i = 0; i < count; ++i)
{
data[i] = s[i];
}
data[count] = '\0';
// 初始化成员变量
_capacity = count;
_size = count;
_data = data;
}
```
4. 拷贝构造函数
```c++
string::string(const string& other)
{
// 分配 other._capacity + 1 个字节的空间,存储 other._data 和一个空字符
char* data = new char[other._capacity + 1];
for (size_t i = 0; i < other._size; ++i)
{
data[i] = other._data[i];
}
data[other._size] = '\0';
// 初始化成员变量
_capacity = other._capacity;
_size = other._size;
_data = data;
}
```