c++string.resize的所有用法
时间: 2023-12-10 18:05:30 浏览: 52
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的shrink_to_fit
C++中的string类提供了shrink_to_fit()函数,可以使string的容量(capacity)随着size的缩小而缩小。\[2\]当我们使用resize()函数来改变string的大小时,如果size缩小后,字符超出的部分会被裁剪掉,但是capacity不会减小。而shrink_to_fit()函数可以在size缩小后,将capacity也相应地缩小,以节省内存空间。\[2\]这个函数在C++11中被引入,可以通过调用string对象的shrink_to_fit()方法来使用。
#### 引用[.reference_title]
- *1* [C++ string清空并释放内存空间的两种方法(shrink_to_fit()、swap())](https://blog.csdn.net/qq_41687938/article/details/117731243)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [c++ string的详细用法(15)reserve()与resize()与shrink_to_fit()](https://blog.csdn.net/qq_40630246/article/details/103655230)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [【C++】如何释放vector的内存空间及std::vector::shrink_to_fit用法简介](https://blog.csdn.net/weixin_43753894/article/details/126970068)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]