c++ std20 字符串 去掉空格
时间: 2024-09-07 22:02:26 浏览: 86
在C++20标准库中,你可以使用`std::remove_if()`函数结合`std::isspace()`来去掉字符串中的所有空格。`std::isspace()`是一个字符分类函数,如果输入的是空白字符(包括空格、制表符、换行符等),它会返回`true`。下面是一个简单的示例:
```cpp
#include <string>
#include <algorithm>
#include <cctype>
std::string remove_spaces(const std::string& str) {
str.erase(std::remove_if(str.begin(), str.end(), ::isspace), str.end());
return str;
}
int main() {
std::string original_str = "Hello World with spaces";
std::string result = remove_spaces(original_str);
std::cout << "Original string: " << original_str << "\n";
std::cout << "String without spaces: " << result << "\n";
return 0;
}
```
在这个例子中,`std::remove_if()`找到所有的空格字符并从原始字符串中移除它们,最后返回处理后的字符串。
相关问题
c++输入的字符串去除空格
在 C++ 中,你可以使用标准库中的 `std::string` 类以及 `erase()` 函数来移除字符串中的空格。这里是一个简单的示例:
```cpp
#include <iostream>
#include <string>
std::string removeSpaces(const std::string& str) {
// 使用 erase 函数删除所有空格字符
str.erase(std::remove(str.begin(), str.end(), ' '), str.end());
return str;
}
int main() {
std::string input = "Hello World with spaces";
std::cout << "Original string: " << input << std::endl;
std::string result = removeSpaces(input);
std::cout << "String without spaces: " << result << std::endl;
return 0;
}
```
在这个例子中,`std::remove()` 函数会移动字符串中的非空格字符到它们原本的位置,而空格会被删除,然后我们使用 `str.erase()` 函数清除从原始位置到最后的所有空元素。
c++字符串去除空格
在C++中,可以使用`std::string`类的一些内置函数或迭代器来去除字符串中的空格。以下是几种常见的方法:
1. **使用`erase`和`find`方法**:
```cpp
std::string str = "Hello World!";
str.erase(str.find(" "), str.find(" ", std::string::npos)); // 移除第一个空格后的所有空格
```
这里从字符串中找到第一个空格的位置并删除,然后继续查找下一个空格直到`std::string::npos`(表示字符串结束)。
2. **使用`replace`方法**:
```cpp
std::string str = "Hello World!";
str.replace(str.find(" "), str.find(" ") - str.begin(), ""); // 删除第一个空格
if (str.find(" ") != std::string::npos) {
str.replace(str.find(" "), str.find(" ") - str.begin(), "");
}
```
这种方法先删除第一个空格,然后再检查是否还有其他空格,并逐个处理。
3. **使用正则表达式库(如Boost或C++17的`<regex>`)**:
如果你需要支持更复杂的模式匹配,可以使用正则表达式。例如,使用`std::regex_replace`:
```cpp
#include <regex>
std::string str = "Hello World!";
str = std::regex_replace(str, std::regex("\\s+"), ""); // 使用\s+匹配一个或多个连续空格
```
阅读全文