Remove all characters from string except alphabets in C++
Understanding String Filtering
Filtering a string means removing all non-alphabetic characters from it.
We will explore three different methods to achieve this in C++.
Method 1: Using a Loop
This method iterates through the string and keeps only alphabetic characters.
#include <iostream>
#include <cctype>
#include <algorithm>
using namespace std;
void remove_non_alpha(string &str) {
int j = 0;
for (int i = 0; i < str.length(); i++) {
if (isalpha(str[i])) {
str[j++] = str[i];
}
}
str.resize(j);
}
int main() {
string str = "H3ll0 W@rld!";
remove_non_alpha(str);
cout << "Filtered String: " << str << endl;
return 0;
}
Output: HllWrld
Method 2: Using Recursion
This method filters the string recursively.
#include <iostream>
#include <cctype>
#include <algorithm>
using namespace std;
void filter_recursive(string &str, int index, int new_index) {
if (index == str.length()) {
str.resize(new_index);
return;
}
if (isalpha(str[index])) {
str[new_index++] = str[index];
}
filter_recursive(str, index + 1, new_index);
}
int main() {
string str = "C0d!ng123";
filter_recursive(str, 0, 0);
cout << "Filtered String: " << str << endl;
return 0;
}
Output: Cdng
Method 3: Using an Extra String
This method uses an auxiliary string to store only alphabetic characters.
#include <iostream>
#include <cctype>
#include <algorithm>
using namespace std;
void filter_with_aux(const string &str, string &result) {
for (char ch : str) {
if (isalpha(ch)) {
result += ch;
}
}
}
int main() {
string str = "P@r0gr@mm1ng";
string filtered;
filter_with_aux(str, filtered);
cout << "Filtered String: " << filtered << endl;
return 0;
}
Output: Prgrmmng