unexpected eof

Discussion in 'C++' started by Alan, Jul 1, 2006.

  1. Alan

    Alan Guest

    Dear All,

    I'm trying to write a C++ that reads in hexadecimal characters from a
    text file. For this I use the >> to read in a character at a time
    inside a while loop that waits for eof to be reached. I'm able to read
    in correctly about half my text file, then the program breaks out of
    the while loop.

    I presume this is due to the fact that one of the hex characters that
    I'm trying to read in, is equals to eof. I've tried to get around this
    problem, by using file pointers to determine the size of the file and
    then use a for loop to read in the corresponding amount of characters.
    This doing, I can copy half the initial text file into another file,
    with the rest being filled with rubbish.

    Does anyone have any ideas how I could get around this problem?

    Thanks in advance for your help,

    Regards,

    Alan
     
    Alan, Jul 1, 2006
    #1
    1. Advertising

  2. Alan

    Yong Hu Guest

    Alan 写é“:

    > Dear All,
    >
    > I'm trying to write a C++ that reads in hexadecimal characters from a
    > text file. For this I use the >> to read in a character at a time
    > inside a while loop that waits for eof to be reached. I'm able to read
    > in correctly about half my text file, then the program breaks out of
    > the while loop.
    >
    > I presume this is due to the fact that one of the hex characters that
    > I'm trying to read in, is equals to eof. I've tried to get around this
    > problem, by using file pointers to determine the size of the file and
    > then use a for loop to read in the corresponding amount of characters.
    > This doing, I can copy half the initial text file into another file,
    > with the rest being filled with rubbish.
    >
    > Does anyone have any ideas how I could get around this problem?
    >
    > Thanks in advance for your help,
    >
    > Regards,
    >
    > Alan


    There are more than a few possibilities for your case. It is good if
    you could show us a part of your code.

    Regards,
     
    Yong Hu, Jul 1, 2006
    #2
    1. Advertising

  3. Alan

    Rolf Magnus Guest

    Alan wrote:

    > Dear All,
    >
    > I'm trying to write a C++ that reads in hexadecimal characters from a
    > text file. For this I use the >> to read in a character at a time
    > inside a while loop that waits for eof to be reached. I'm able to read
    > in correctly about half my text file, then the program breaks out of
    > the while loop.
    >
    > I presume this is due to the fact that one of the hex characters that
    > I'm trying to read in, is equals to eof. I've tried to get around this
    > problem, by using file pointers to determine the size of the file and
    > then use a for loop to read in the corresponding amount of characters.
    > This doing, I can copy half the initial text file into another file,
    > with the rest being filled with rubbish.
    >
    > Does anyone have any ideas how I could get around this problem?


    We're not mind readers. You didn't show any code at all, so there is no way
    to tell you what the problem might be. Your explanations are too vague.
    Please post a minimal, but complete program that shows the problem.
     
    Rolf Magnus, Jul 1, 2006
    #3
  4. Alan wrote:
    > Dear All,
    >
    > I'm trying to write a C++ that reads in hexadecimal characters from a
    > text file. For this I use the >> to read in a character at a time
    > inside a while loop that waits for eof to be reached. I'm able to read
    > in correctly about half my text file, then the program breaks out of
    > the while loop.
    >
    > I presume this is due to the fact that one of the hex characters that
    > I'm trying to read in, is equals to eof. I've tried to get around this
    > problem, by using file pointers to determine the size of the file and
    > then use a for loop to read in the corresponding amount of characters.
    > This doing, I can copy half the initial text file into another file,
    > with the rest being filled with rubbish.
    >
    > Does anyone have any ideas how I could get around this problem?
    >


    You should have posted a code fragment. From your description I can't
    make
    a suggestion what causes the problem.

    If it is a text file, then reading characters from it will never result
    a character being an
    eof indicator because eof indicator is different from all characters
    (it is of integer type).

    Instead parsing the input yourself allow C++ standard library do it.

    Try the following code:

    #include <iostream>
    #include <fstream>
    #include <iterator>
    #include <algorithm>
    #include <vector>
    #include <cstdlib>

    int main()
    {
    std::vector<int> hex_collection;
    std::ifstream input_file("input_file.txt");

    if (input_file.is_open() == false) {
    std::cerr << "failed opening input_file.txt\n";
    exit(EXIT_FAILURE);
    }

    // tell the input stream we will be reading integer values in
    hexadecimal base
    input_file.setf(std::ios_base::hex, std::ios_base::basefield);

    std::istream_iterator<int> begin_input_iterator(input_file);
    std::istream_iterator<int> end_input_iterator;

    // read hex values into hex_collection vector
    std::copy(begin_input_iterator, end_input_iterator,
    std::back_inserter(hex_collection));

    // output the values we read in.
    std::copy(hex_collection.begin(), hex_collection.end(),
    std::eek:stream_iterator<int>(std::cout, " "));
    std::cout << "\n";
    }


    P.Krumins
     
    Peteris Krumins, Jul 1, 2006
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Kobu
    Replies:
    10
    Views:
    640
    Keith Thompson
    Mar 4, 2005
  2. oscartheduck
    Replies:
    7
    Views:
    5,361
    Steve Holden
    Apr 4, 2007
  3. AB@
    Replies:
    2
    Views:
    1,388
  4. SpreadTooThin

    ifstream eof not reporting eof?

    SpreadTooThin, Jun 13, 2007, in forum: C++
    Replies:
    10
    Views:
    707
    James Kanze
    Jun 15, 2007
  5. Jan Burse
    Replies:
    67
    Views:
    1,082
    Jan Burse
    Mar 14, 2012
Loading...

Share This Page