c++ string去除不可打印字符
时间: 2023-07-19 15:46:56 浏览: 301
c++删除指定的数组值(不打印)
5星 · 资源好评率100%
可以使用C++的STL库中的`std::remove_if`和`std::string::erase`函数来去除不可打印字符。具体步骤如下:
1. 定义一个谓词函数,用于判断给定字符是否为不可打印字符。
```C++
bool is_not_printable(char c) {
return !isprint(static_cast<unsigned char>(c));
}
```
2. 使用`std::remove_if`函数将不可打印字符移动到字符串末尾,并返回指向第一个被移动字符的迭代器。
```C++
std::string::iterator new_end = std::remove_if(str.begin(), str.end(), is_not_printable);
```
3. 使用`std::string::erase`函数将末尾的不可打印字符截断。
```C++
str.erase(new_end, str.end());
```
完整代码如下:
```C++
#include <iostream>
#include <string>
#include <algorithm>
#include <cctype>
bool is_not_printable(char c) {
return !isprint(static_cast<unsigned char>(c));
}
int main() {
std::string str = "hello\0world\7!";
std::cout << "Before: " << str << std::endl;
std::string::iterator new_end = std::remove_if(str.begin(), str.end(), is_not_printable);
str.erase(new_end, str.end());
std::cout << "After: " << str << std::endl;
return 0;
}
```
阅读全文