Tutorialspoint.dev

stringstream in C++ and its applications

A stringstream associates a string object with a stream allowing you to read from the string as if it were a stream (like cin).

Basic methods are –

clear() — to clear the stream
str() — to get and set string object whose content is present in stream.
operator << — add a string to the stringstream object.
operator >> — read something from the stringstream object,

stringstream class is extremely useful in parsing input.

Applications :



  1. Count number of words in a string
    Examples:
    Input : Asipu Pawan Kumar
    Output : 3
    
    Input : Geeks For Geeks Ide
    Output : 4
    // CPP program to count words in a string
    // using stringstream.
    #include <bits/stdc++.h>
    using namespace std;
      
    int countWords(string str)
    {
        // breaking input into word using string stream
        stringstream s(str); // Used for breaking words
        string word; // to store individual words
      
        int count = 0;
        while (s >> word)
            count++;
        return count;
    }
      
    // Driver code
    int main()
    {
        string s = "geeks for geeks geeks "
                   "contribution placements";
        cout << " Number of words are: " << countWords(s);
        return 0;
    }

    Output:

      Number of words are: 6
  2. Print frequencies of individual words in a string
    Input : Geeks For Geeks Quiz Geeks Quiz Practice Practice
    Output : For -> 1
             Geeks -> 3
             Practice -> 2
             Quiz -> 2
    
    Input : Word String Frequency String
    Output : Frequency -> 1
             String -> 2
             Word -> 1 
    
    // CPP program to demonstrate use of stringstream
    // to count frequencies of words.
    #include <bits/stdc++.h>
    using namespace std;
      
    void printFrequency(string st)
    {
        // each word it mapped to it's frequency
        map<string, int> FW;
        stringstream ss(st); // Used for breaking words
        string Word; // To store individual words
      
        while (ss >> Word)
            FW[Word]++;
      
        map<string, int>::iterator m;
        for (m = FW.begin(); m != FW.end(); m++)
            cout << m->first << " -> "
                 << m->second << " ";
    }
      
    // Driver code
    int main()
    {
        string s = "Geeks For Geeks Ide";
        printFrequency(s);
        return 0;
    }

    Output:

    For -> 1
    Geeks -> 2
    Ide -> 1
    
  3. Removing spaces from a string using Stringstream
  4. Converting Strings to Numbers in C/C++

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.



This article is attributed to GeeksforGeeks.org

leave a comment

code

0 Comments

load comments

Subscribe to Our Newsletter