Reading getline from cin into a stringstream (C++)

Reading getline from cin into a stringstream (C++)

You are almost there, the error is most probably1 caused because you are trying to call getline with second parameter stringstream, just make a slight modification and store the data within the std::cin in a string first and then used it to initialize a stringstream, from which you can extract the input:

// read input
string input;
getline(cin, input);

// initialize string stream
stringstream ss(input);

// extract input
string name;
string course;
string grade;

ss >> name >> course >> grade;

1. Assuming you have included:

#include <iostream>
#include <sstream>
#include <string>

using namespace std;

You cannot std::getline() a std::stringstream; only a std::string. Read as a string, then use a stringstream to parse it.

struct Student
{
  string   name;
  string   course;
  unsigned grade;
};

vector <Student> students;
string s;
while (getline( cin, s ))
{
  istringstream ss(s);
  Student student;
  if (ss >> student.name >> student.course >> student.grade)
    students.emplace_back( student );
}

Hope this helps.

Reading getline from cin into a stringstream (C++)

You can just use cin >> name >> course >> grade; because >> will read until whitespace anyway.

Leave a Reply

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