How to trim a string in C++

In this tutorial, we will discuss how to trim leading and trailing white spaces from a string in C++

Trim string with built-in methods in C++

We use inbuilt “find_first_not_of( )” and “find_last_not_of( )” functions to find the indices of the non white spaces and trim the white spaces around the given string.

Let’s see the code:

// C++ program to remove white spaces in a given string
#include <bits/stdc++.h>
using namespace std;

string toRemove = " \n\r\t\f\v"; // all types of possible spaces to remove

string leftTrim(const string &s){
  auto start = s.find_first_not_of(toRemove); // finding the index just after white spaces
  return (start == string::npos) ? "" : s.substr(start); // removed leading white spaces
}

string rightTrim(const string &s){
  auto end = s.find_last_not_of(toRemove); // finding the index just before white spaces
  return (end == string::npos) ? "" : s.substr(0, end + 1); // removed trailing white spaces
}

string trim(const string &s) {
  // first trimming the left white space i.e. leading white spaces and next trimming the right white spaces i.e. trailing white spaces 
  return rightTrim(leftTrim(s)); 
}

int main() {
  string s = " \tThis_is_testing\r\n ";
  cout << "The string before trimming: " << "BEGIN:" << s << ":END";
  cout << "\nThe string after left trimming: " << "BEGIN:" << leftTrim(s) << ":END";
  cout << "\nThe string after right trimming: " << "BEGIN:" << rightTrim(s) << ":END";
  cout << "\nThe string after trimming from both sides: " << "BEGIN:" << trim(s) << ":END" << endl;

  return 0;
}

Output:

The string before trimmming: BEGIN: 	This_is_testing
 :END
The string after left trimming: BEGIN:This_is_testing
 :END
The string after right trimming: BEGIN: 	This_is_testing:END
The string after trimming from both sides: BEGIN:This_is_testing:END

Complexity Analysis

Time Complexity: O(n)
Space Complexity: O(1)

 

Trim string using boost

To trim a string we use an external library known as “boost”. Boost provides free peer-reviewed portable C++ source libraries. You should download the library from the boost website and add it to the “include” folder on your computer.

The “boost” library has 3 trim functions namely trim_left(), trim_right(), trim().

Let’s see the code:

// C++ program to remove white spaces in a given string
#include <iostream>
#include <boost/algorithm/string.hpp>

using namespace std;
using namespace boost::algorithm;

int main() {
  string s1 = " \tThis_is_testing\r\n ";
  string s2 = s1, s3 = s1;

  cout << "The string before trimming:" << " BEGIN:" << s1 << ":END";
  trim_left(s1); // trimming left white spaces of a string
  cout << "\nThe string after left trimming:" << " BEGIN:" << s1 << ":END";
  trim_right(s2); // trimming right white spaces of a string
  cout << "\nThe string after right trimming:" << " BEGIN:" << s2 << ":END";
  trim(s3); // // trimming both sides white spaces of a string
  cout << "\nThe string after trimming from both sides:" << " BEGIN:" << s3 << ":END" << endl;

  return 0;
}

Output:

The string before trimmming: BEGIN: 	This_is_testing
 :END
The string after left trimming: BEGIN:This_is_testing
 :END
The string after right trimming: BEGIN: 	This_is_testing:END
The string after trimming from both sides: BEGIN:This_is_testing:END

Complexity Analysis

Time Complexity: O(n)
Space Complexity: O(1)

Also read: Trim Strings – Boost String Algorithm in C++

Leave a Reply

Your email address will not be published. Required fields are marked *