I am trying to do a simple beginner's task in C++. I have a text file containing the line "John Smith 31". That's it. I want to read in this data using an ifstream variable. But I want to read the name "John Smith" into one string variable, and then the number "31" into a separate int variable.
I tried using the getline function, as follows:
ifstream inFile;
string name;
int age;
inFile.open("file.txt");
getline(inFile, name);
inFile >> age;
cout << name << endl;
cout << age << endl;
inFile.close();
The problem with this is that it outputs the entire line "John Smith 31". Is there a way I can tell the getline function to stop after it has gotten the name and then kind of "restart" to retrieve the number? Without manipulating the input file, that is?
you should do as:
This will give you the "joht" in name then to get next token,
temp will get "smith" in it. then you should use string concatination to append the temp at end of name. as:
(you may also append space first, to obtain a space in between).
getline
, as it name states, read a whole line, or at least till a delimiter that can be specified.So the answer is "no",
getline
does not match your need.But you can do something like: