Odstranění mezer z řetězce pomocí Stringstream

Řešení pro odstranění mezer z řetězce je již zveřejněno zde . V tomto článku jiné řešení pomocí stringstream se diskutuje.

Algoritmus:  

1. Enter the whole string into stringstream. 2. Empty the string. 3. Extract word by word and concatenate to the string. 

Program 1: Použití EOF . 

CPP
   // C++ program to remove spaces using stringstream   #include          using     namespace     std  ;   // Function to remove spaces   string     removeSpaces  (  string     str  )   {      stringstream     ss  ;      string     temp  ;      // Storing the whole string      // into string stream      ss      < <     str  ;      // Making the string empty      str     =     ''  ;      // Running loop till end of stream      while     (  !  ss  .  eof  ())     {      // Extracting word by word from stream      ss     >>     temp  ;      // Concatenating in the string to be      // returned      str     =     str     +     temp  ;      }      return     str  ;   }   // Driver function   int     main  ()   {      // Sample Inputs      string     s     =     'This is a test'  ;      cout      < <     removeSpaces  (  s  )      < <     endl  ;      s     =     'geeks for geeks'  ;      cout      < <     removeSpaces  (  s  )      < <     endl  ;      s     =     'geeks quiz is awesome!'  ;      cout      < <     removeSpaces  (  s  )      < <     endl  ;      s     =     'I love to code'  ;      cout      < <     removeSpaces  (  s  )      < <     endl  ;      return     0  ;   }   

Výstup
Thisisatest geeksforgeeks geeksquizisawesome! Ilovetocode 

Časová složitost: O(n) kde n je délka řetězce
Pomocný prostor: Na)

Program 2: Použití getline() . 

CPP
   // C++ program to remove spaces using stringstream   // and getline()   #include          using     namespace     std  ;   // Function to remove spaces   string     removeSpaces  (  string     str  )   {      // Storing the whole string      // into string stream      stringstream     ss  (  str  );      string     temp  ;      // Making the string empty      str     =     ''  ;      // Running loop till end of stream      // and getting every word      while     (  getline  (  ss       temp       ' '  ))     {      // Concatenating in the string      // to be returned      str     =     str     +     temp  ;      }      return     str  ;   }   // Driver function   int     main  ()   {      // Sample Inputs      string     s     =     'This is a test'  ;      cout      < <     removeSpaces  (  s  )      < <     endl  ;      s     =     'geeks for geeks'  ;      cout      < <     removeSpaces  (  s  )      < <     endl  ;      s     =     'geeks quiz is awesome!'  ;      cout      < <     removeSpaces  (  s  )      < <     endl  ;      s     =     'I love to code'  ;      cout      < <     removeSpaces  (  s  )      < <     endl  ;      return     0  ;   }   // Code contributed by saychakr13   

Výstup
Thisisatest geeksforgeeks geeksquizisawesome! Ilovetocode 

Časová složitost: O(n) 
Pomocný prostor: O(n)