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