C++删除字符串中的除了字母外的字符
时间: 2025-01-01 09:40:11 浏览: 4
在C++中,你可以使用标准库中的`std::remove_if`函数配合自定义的谓词(predicate)来删除字符串中的非字母字符。下面是一个示例,展示了如何使用`std::remove`和`std::back_inserter`组合来达到目的:
```cpp
#include <algorithm> // 引入算法库
#include <string>
// 自定义谓词,检查字符是否为字母
bool is_alpha_char(char c) {
return std::isalnum(c); // 非字母字符包括空格和数字,所以用isalnum
}
void remove_non_alphabetic_chars(std::string& input) {
input.erase(std::remove_if(input.begin(), input.end(), is_alpha_char), input.end());
}
int main() {
std::string str = "Hello! This is a test string with numbers.";
remove_non_alphabetic_chars(str);
std::cout << "Cleaned String: " << str << std::endl;
return 0;
}
```
这段代码会将`str`中的所有非字母字符(包括空格和数字)删除,留下仅包含字母的字符串。
相关问题
c++提取字符串中的字母
可以使用循环和判断来遍历字符串中的每个字符,判断该字符是否为字母,如果是,则将其存储到另一个字符串中。以下是一个示例代码:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
char str[] = "Hello, World!";
char letters[100];
int i, j = 0;
for (i = 0; str[i] != '\0'; i++) {
if (isalpha(str[i])) {
letters[j] = str[i];
j++;
}
}
letters[j] = '\0';
printf("Original String: %s\n", str);
printf("Letters Only: %s\n", letters);
return 0;
}
```
输出结果:
```
Original String: Hello, World!
Letters Only: HelloWorld
```
在上面的代码中,我们使用 `isalpha` 函数来判断一个字符是否为字母,如果是,则将其存储到 `letters` 数组中,最后在 `letters` 数组的末尾添加一个空字符,以表示字符串的结束。
C++去除字符串中重复字母
以下是一个C程序,可以去除字符串中的重复字母:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100], newstr[100];
int len, i, j, k;
printf("Enter a string: ");
scanf("%s", str);
len = strlen(str);
for(i=0; i<len; i++) {
for(j=i+1; j<len; j++) {
if(str[i] == str[j]) {
for(k=j; k<len; k++) {
str[k] = str[k+1];
}
len--;
j--;
}
}
}
printf("String with no duplicate letters: %s\n", str);
return 0;
}
```
该程序通过两个嵌套的循环来比较字符串中的每个字符,并删除重复的字符。最后,将更改后的字符串打印出来。
阅读全文