Search code examples
c++intfstream

Checking for incoming data type from file


I'm reading in from a .txt file that looks something along the lines of:

int string string string
int string string
int string string string string string

where the number of string types after each int is unknown. Each line represents a new group of values and each group needs to be into their own array value or whatever (don't know if I've worded that correctly but I hope you'll understand what I mean).

Is there a check I can perform so see if the incoming data from the file is an int so that if this is true and can tell my program its a new group of data?

I've tried

int check
if(check = file1.peek()){//start new group assignment} 

but this doesn't appear to work. I need to be able to use the int value once I have found that it is the next data type being read in.

Thanks in advance.


Solution

  • There are several ways to do this, however I would suggest that maybe your groups are on separate lines, and the spaces within a line delimit items within a group correct?

    So I would read the file, line-at-a-time and then split each line on spaces.

    Let me know if the above fits and then we can explain how to do it.

    Ok so you can use getline:

    while (cin.good()) // reading from standard input until EOF
    {
        String line_str;
        getline(cin, line_str); // get next line from standard input
        istringstream line(line_str); // put line into string stream
    
        if (line.good()) // read from string stream until EOF
        {
            int x;
            line >> x; // read an integer from string stream
    
            while (line.good()) // read from string stream until EOF
            {
                string s;
                line >> s; // read strings from string stream
                /// process s
            }
        }
    }