Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 3255
  • Last Modified:

C++ reading text file extracting c-string using get function

I am attempting to read a record from a (.txt) file. The layout is:
int ID;
char name[21];
double Payrate;
int  dependents;

I am using the code block below:

 while (!masterFile.eof())
      {
         //get the next read of the file
       masterFile >> ID;
        masterFile.get( name, 21, '\n' );
       masterFile>> payRate >> dependents >> eType;
       numItems++;
      }

The question is the "get" function does not work, it returns nothing. When this happens the rest of the read is messed up. Could someone tell me how to get this get to work. I must use the get function please do not suggest other methods.
   
0
luling1972
Asked:
luling1972
  • 5
  • 3
1 Solution
 
Infinity08Commented:
I assume that each field is on a separate line in the file ?

If so, the cin>> that reads the ID does not skip the end-of-line character, and thus the get will not read the name, but an empty string (whatever comes after the ID on the same line).

For input it's recommended to use getline to read a line from the file, and then parse that line to get the values out of it.

If you have to use get, then you can do something similar, or you'll have to make sure to skip to the next line before reading the name.
0
 
luling1972Author Commented:
All four  four fiedls are on the same line, Below is the file itself:

 5 Christine Kim       30.00 2 1 F
15 Ray Allrich         10.25 0 0 M
16 Adrian Bailey       12.50 0 0 F
17 Juan Gonzales       30.00 1 1 M
18 Morris Kramer        8.95 0 0 M
22 Cindy Burke         15.00 1 0 F
24 Esther Bianco       10.25 0 0 F
25 Jim Moore           27.50 3 1 M
32 Paula Cameron       14.50 0 0 F
36 Melvin Ducan        10.25 0 0 M
37 Nina Kamran         30.00 1 1 F
38 Julie Brown         35.00 0 1 F
40 Imelda Buentello    14.50 0 0 F
42 J. P. Morgan        12.50 0 0 M
43 Maria Diaz          15.00 0 0 F
 
0
 
Infinity08Commented:
Your code does not match the input file. There are TWO int values after the double, not just one !!
0
Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
luling1972Author Commented:
Sorry, I made an error copying the text from the program. Please add

int   eType;    This is the second int field.
0
 
luling1972Author Commented:
Also the char field at the end of the file is to ignored.
0
 
megaphreakCommented:
I had something similar happen in my own code a while back and what was happening was that the get returned a whitespace character left in the file from reading in the thing before.  Try doing two gets and discarding the first one.
0
 
Infinity08Commented:
>> int   eType;    This is the second int field.

Then you're missing the final character in the line ... (the gender if I'm not mistaken ... M/F). You need to read that too !
0
 
Infinity08Commented:
May I ask why you want to delete this question ? Was your problem resolved ? If not, do you need further assistance ?
0
 
Infinity08Commented:
Post http:#20392825 tells how to solve these kinds of problems in general.
Post http:#20394370 points out a specific problem with the way input is processed.

I'd love nothing better than to help luling1972 further to make sure that his/her problem is resolved, but I can't do that without replies :)
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

  • 5
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now