Removing punctuation and spaces from a String in C++
There may be times in which you need to do character processing that only deals with the Alphanumeric characters of a string, not the punctuations or blank spaces.
Here is a program that will remove the punctuations and spaces from a string.
Download the EXE and Source Code
The Code
//Joseph McCullough
//Program: alphanumonly.cpp
//Description: Takes a string and creates another string that contains only the
//letters and numbers of the first string.
//Visit www.mcculloughdesigns.com/blog for more C++ Goods!
#include <iostream>
#include <string>
using namespace std;
string alphaNumOnly(string);
const string SENTINEL = "0";//When entered as strToConvert,
//terminates program.
int main()
{
string strToConvert; //The string that will be converted to.
string strConverted; //strToConverted with only letters and numbers.
cout << "***************************************************" << "\n"
<< "AlphaNumOnly.exe" << "\n"
<< "Removes blank spaces and punctuations from a string" << "\n"
<< "Provided By McCullough Designs" << "\n"
<< "***************************************************";
//Read in strToConvert
cout << "\n\nEnter a String or enter 0 to exit: ";
getline(cin, strToConvert);
while (strToConvert != SENTINEL)
{
strConverted = alphaNumOnly(strToConvert);
cout << "\nNew String: " << strConverted;
//Read in strToConvert
cout << "\n\nEnter a String or enter 0 to exit: ";
getline(cin, strToConvert);
}
return 0;
}
/************ function alphaNumOnly *********************************\
Description: Used to isolate the alphanumeric characters of a string
Precondition: strToConvert is defined
Postcondition: Returns a string
/********************************************************************/
string alphaNumOnly(string strToConvert)
{
string strConverted; //strToConvert with only alpha-numeric characters.
for (unsigned int i=0; i<strToConvert.length();i++)
{
if (isalnum(strToConvert[i])) //If current character is alpha-numeric
strConverted += strToConvert[i]; //Add the character to strConverted
}
return strConverted;
}
Download the EXE and Source Code
The Explanation
The main() component of this function is just a sentinel controlled loop. The alphaNumOnly function is what’s important.
We create a local string variable
string strConverted
To store all the letters and numbers from the original string. This string is returned at the end of the function.
Let’s examine the for loop
for (unsigned int i=0; i<strToConvert.length();i++)
{
if (isalnum(strToConvert[i])) //If current character is alpha-numeric
strConverted += strToConvert[i]; //Add the character to strConverted
}
We begin by setting a counter i to 0. We use unsigned int because string lengths will always be positive. We then tell the loop to keep going until we reach the end of the string being processed.
The body of the for loop is where the magic happens.
The logic is as follows:
Instead of removing the spaces and punctuation from the string being processed, it would be much easier to create a new string that contains only the alphanumeric characters. Each time an alphanumeric character is found (if(isalnum(string) evaluates to true), it is appended to the end of strToConvert (as indicated by the += operator. A+=b is short for A= A+b)
So after you do this for the entire string, strToConvert will appear to be the original string but with only alpha numeric characters.
Download the EXE and Source Code
Related Posts:


Good, work. I could have used something this simple for a project a few semesters ago, but I didnt understand C++ string functions as well back then as I do today. I do have one question, since the string isnt in an array, you dont need to put a null char at the end of it? Plus you dont need to allocate memory for the variable either?
Since the string is associated with the string object and not a string literal, it would automatically be null terminated. “C-style” strings need to be null terminated.
Memory was temporarily added to the stack with the declaration
string strConverted; //strToConvert with only alpha-numeric characters
Once the function is returned, the variable storage is wiped from the stack.