0

so my program has to read data from text file and pass it to the function. text file contains integer and string in every line. it looks like this:

23456 john
96512 martin
56985 wendy

i've written it in C using this code:

while (fscanf(filestream, "%d%s", &key, &value) == 2){
    Insert(key, value);
}

it would be very helpful if someone could write the exact equivalent in C++ for the given code.

Thank you in advance.

Edited by Reverend Jim: Fixed formatting

3
Contributors
4
Replies
5
Views
7 Years
Discussion Span
Last Post by csurfer
Featured Replies
  • 1

    Well use getline function. It advances the file get pointer to next line automatically.Or even you can look upon f.seekg() function. Read More

0

Don't think anyone will write the code for you, too bad I don't really know C to begin with.

I bet you can find very similiar threads in the C++ forum history. If not, you should check getline, << and maybe string2int

0

Here is an algorithm for it :

//open a file using fstream objects say file and functions like file.open() in input mode
// Create a string variable which can act as a buffer for holding the values
while(getline( <file descriptor value>, <buffer object>)!=NULL)
{
int key;
string skey,value;
//extract string value of key into skey and convert it into integer using istringstream
//extract string value of key into value
//With the help of a new fstream object write into the file you want it to.
//erase the buffer for providing space for next input using file.erase() function
}
0

so i've got a bit further. i would've never believed that something like this can work, but it passes the right values. the problem is that it reads only the first line. here's the updated code:

file >> key;
file >> value;
d->insert(key, value);

how can i read the lines following the first one???

1

Well use getline function. It advances the file get pointer to next line automatically.Or even you can look upon f.seekg() function.

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.