C++ 去除string 类型里的空格
315浏览 · 2023-09-30 18:07:26
可以使用C++标准库中的算法库和[字符串](https://geek.csdn.net/educolumn/ba94496e6cfa8630df5d047358ad9719?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&spm=1055.2569.3001.10083)库来去除[string](https://geek.csdn.net/edu/8802d631b97a4a6af1f4d0bbf8527465?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&spm=1055.2569.3001.10083)类型中的空格。具体方法如下:
1. 使用`std::remove_if`算法删除空格
```cpp
#include <algorithm>
#include <[string](https://geek.csdn.net/edu/8802d631b97a4a6af1f4d0bbf8527465?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&spm=1055.2569.3001.10083)>
std::string str = " Hello, world! ";
str.erase(std::remove_if(str.begin(), str.end(), ::isspace), str.end());
// str现在的值为"Hello,world!"
这里使用了`std::isspace`[函数](https://geek.csdn.net/educolumn/ba94496e6cfa8630df5d047358ad9719?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&spm=1055.2569.3001.10083)来判断字符是否为空格,`::`是用来限定作用域的。
2. 使用循环删除空格
```cpp
#include <string>
std::string str = " Hello, world! ";
for (auto it = str.begin(); it != str.end(); ) {
if (::isspace(*it)) {
it = str.erase(it);
} else {
++it;
// str现在的值为"Hello,world!"
这个方法使用了一个循环来遍历[字符串](https://geek.csdn.net/educolumn/ba94496e6cfa8630df5d047358ad9719?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&spm=1055.2569.3001.10083),如果遇到空格就删除它。
两种方法的效果是相同的,只是实现方式不同。
相关问题
可以使用C++11中的正则表达式库`<regex>`来去除string类型中的空格,具体代码如下:
```c++
#include <iostream>
#include <string>
#include <regex>
int main()
std::string str = "hello world";
std::regex pattern("\\s+"); // 匹配一个或多个空格
std::string result = std::regex_replace(str, pattern, "");
std::cout << "原字符串:" << str << std::endl;
std::cout << "去除空格后的字符串:" << result << std::endl;
return 0;
```