Skip to content
Related Articles

Related Articles

getline (string) in C++
  • Difficulty Level : Easy
  • Last Updated : 13 Jun, 2020

The C++ getline() is a standard library function that is used to read a string or a line from an input stream. It is a part of the <string> header. The getline() function extracts characters from the input stream and appends it to the string object until the delimiting character is encountered. While doing so the previously stored value in the string object str will be replaced by the input string if any.

The getline() function can be represented in two ways:

  1. Syntax:
    istream& getline(istream& is, 
               string& str, char delim);

    Parameters:

    • is: It is an object of istream class and tells the function about the stream from where to read the input from.
    • str: It is a string object, the input is stored in this object after being read from the stream.
    • delim: It is the delimitation character which tells the function to stop reading further input after reaching this character.

    Return Value: This function returns the same input stream as is which is accepted as parameter.

  2. Syntax:

    istream& getline (istream& is, string& str);

    The second declaration is almost the same as that of the first one. The only difference is, the latter have an delimitation character which is by default new line(\n)character.



    Parameters:

    • is: It is an object of istream class and tells the function about the stream from where to read the input from.
    • str: It is a string object, the input is stored in this object after being read from the stream.

    Return Value: This function returns the same input stream as is which is accepted as parameter.

Below program demonstrates the working of the getline() function

Example 1:




// C++ program to demonstrate getline() function
  
#include <iostream>
#include <string>
using namespace std;
  
int main()
{
    string str;
  
    cout << "Please enter your name: \n";
    getline(cin, str);
    cout << "Hello, " << str
         << " welcome to GfG !\n";
  
    return 0;
}


Input:

Harsh Agarwal

Output:

Hello, Harsh Agarwal welcome to GfG!

Example 2: We can use getline() function to split a sentence on the basis of a character. Let’s look at an example to understand how it can be done.




// C++ program to understand the use of getline() function
  
#include <bits/stdc++.h>
using namespace std;
  
int main()
{
    string S, T;
  
    getline(cin, S);
  
    stringstream X(S);
  
    while (getline(X, T, ' ')) {
        cout << T << endl;
    }
  
    return 0;
}


Input:

Hello, Faisal Al Mamun. Welcome to GfG!

Output:



Hello,
Faisal
Al
Mamun.
Welcome
to
GfG!

Caution :This function considers a new line or (‘\n’) character as the delimitation character and new line character is valid input for this function.

Example of how new line can cause problem is given below:

Example:




// C++ program to demonstrate
// anomaly of delimitation of
// getline() function
#include <iostream>
#include <string>
using namespace std;
  
int main()
{
    string name;
    int id;
  
    // Taking id as input
    cout << "Please enter your id: \n";
    cin >> id;
  
    // Takes the empty character as input
    cout << "Please enter your name: \n";
    getline(cin, name);
  
    // Prints id
    cout << "Your id : " << id << "\n";
  
    // Prints nothing in name field
    // as "\n" is considered a valid string
    cout << "Hello, " << name
         << " welcome to GfG !\n";
  
    // Again Taking string as input
    getline(cin, name);
  
    // This actually prints the name
    cout << "Hello, " << name
         << " welcome to GfG !\n";
  
    return 0;
}


Input:

7
MOHIT KUMAR

Output:

Your id : 7
Hello,  welcome to GfG !
Hello, MOHIT KUMAR welcome to GfG !

Related Articles:

This article is contributed by Harsh Agarwal and improved by Faisal Al Mamun. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

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

Attention reader! Don’t stop learning now. Get hold of all the important C++ Foundation and STL concepts with the C++ Foundation and STL courses at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up
Recommended Articles
Page :