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

You Might Also Like

leave a comment

code

0 Comments

load comments

Subscribe to Our Newsletter