Reading strings and integers from .txt file and printing output as strings only

Posted by screename71 on Stack Overflow See other posts from Stack Overflow or by screename71
Published on 2011-03-06T23:29:30Z Indexed on 2011/03/07 0:10 UTC
Read the original article Hit count: 255

Filed under:

Hello, I'm new to C++, and I'm trying to write a short C++ program that reads lines of text from a file, with each line containing one integer key and one alphanumeric string value (no embedded whitespace). The number of lines is not known in advance, (i.e., keep reading lines until end of file is reached). The program needs to use the 'std::map' data structure to store integers and strings read from input (and to associate integers with strings). The program then needs to output string values (but not integer values) to standard output, 1 per line, sorted by integer key values (smallest to largest). So, for example, suppose I have a text file called "data.txt" which contains the following three lines:

10 dog
-50 horse
0 cat
-12 zebra
14 walrus

The output should then be:

horse
zebra
cat
dog
walrus

I've pasted below the progress I've made so far on my C++ program:

#include <fstream>  
#include <iostream>  
#include <map>
using namespace std;
using std::map;
int main () 
{
string name;
signed int value;
ifstream myfile ("data.txt");

while (! myfile.eof() )
{
getline(myfile,name,'\n');
myfile >> value >> name;
cout << name << endl;
}
return 0;
myfile.close();
}

Unfortunately, this produces the following incorrect output:

horse
cat
zebra
walrus

If anyone has any tips, hints, suggestions, etc. on changes and revisions I need to make to the program to get it to work as needed, can you please let me know?

Thanks!

© Stack Overflow or respective owner

Related posts about c++