c++string.resize的所有用法
时间: 2023-12-10 13:05:30 浏览: 102
C++中的string类提供了resize()函数,用于改变字符串的大小。它有以下几种用法:
1. resize(n):将字符串的大小改为n,如果n小于当前大小,则截断字符串。如果n大于当前大小,则在末尾添加空字符。
```cpp
string str = "hello";
str.resize(7); // str变为"hello\0\0"
str.resize(3); // str变为"hel"
```
2. resize(n, c):将字符串的大小改为n,如果n小于当前大小,则截断字符串。如果n大于当前大小,则在末尾添加字符c。
```cpp
string str = "hello";
str.resize(7, 'a'); // str变为"helloaa"
str.resize(3, 'b'); // str变为"hel"
```
3. reserve(n):将字符串的存储空间改为至少n个字符,但不改变字符串的大小。这个函数可以用来避免频繁地重新分配内存。
```cpp
string str = "hello";
str.reserve(10); // 分配至少10字节的内存
```
4. shrink_to_fit():将字符串的存储空间缩小到恰好能够存储当前字符串的大小。这个函数可以用来释放多余的内存。
```cpp
string str = "hello";
str.reserve(20); // 分配至少20字节的内存
str.resize(3); // str变为"hel"
str.shrink_to_fit(); // 释放多余的内存
```
相关问题
C++ resize
在C++中,`resize()`是一个用于调整容器大小的函数。它可以用于标准库提供的许多容器,例如`std::vector`、`std::string`等。
`resize()`函数有两种重载形式:
1. `void resize(size_type count)`:将容器的大小调整为count个元素。如果count小于当前容器的大小,则容器会被截断为count个元素。如果count大于当前容器的大小,则会在容器末尾添加默认构造的元素,使容器大小达到count。
例如:
```cpp
std::vector<int> vec;
vec.resize(5); // vec大小变为5,并在末尾添加了5个默认构造的int元素
```
2. `void resize(size_type count, const value_type& value)`:将容器的大小调整为count个元素,并将每个新元素初始化为value。
例如:
```cpp
std::vector<int> vec;
vec.resize(5, 10); // vec大小变为5,并将新添加的5个元素初始化为10
```
这些是`resize()`函数的基本用法,你可以根据实际需求选择适合的重载形式。
c++string插入
在C++中,`std::string` 类型提供了多种方法来进行插入操作,以便添加内容到字符串中。以下是几个常用的插入方法:
1. `insert()` 和 `append()`:
- `insert(pos, str)` 方法可以在指定位置`pos`插入另一个字符串`str`。例如,`myString.insert(5, "Hello")`会在索引5处插入"Hello"。
- `append(str)` 则是在字符串的末尾追加新的字符串。
2. `+=` 运算符:
使用这个运算符可以直接将一个字符串连接到另一个字符串的末尾,如 `myString += " World"`。
3. `push_back()`:
对于单个字符的插入,可以使用这个成员函数,它会将一个字符添加到字符串的末尾。
4. `reserve()` 和 `resize()`:
在插入大量数据前,可以先预分配内存空间以提高效率,通过`reserve(size)`来预留空间,然后用`resize(newSize)`来调整大小。
注意,插入操作可能会改变原字符串的长度,所以插入后通常需要检查新的长度或范围,特别是当处理字符串数组或指针时。
阅读全文