473,320 Members | 1,861 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,320 software developers and data experts.

ifstream::tellg() error

I am reading in image files in a program and I read in
the header in ascii mode and the data in binary mode.
The problem is, sometimes tellg() gives me a completely
incorrect result and sometimes it is just fine. It is
quite annoying because there is no other good way to read
these file and I think it is a problem with Visual C++,
since it works just fine when I compile it using g++ on a
Linux system. Here is an example:

char input[200];
std::ifstream fin("blocks.pgm", std::ios::in);
std::ifstream::pos_type position = fin.tellg();
fin>>input;
position = fin.tellg();

When I run this code, input gets the first two bytes of
the file as it should. The first few bytes of the file
are: 'P5 302 274 255 '. Now, even though it only read
two bytes into input, when tellg() is called on the next
line it returns a position of 3586 bytes into the file.

If I change the input file to "original.pgm", a different
image file, everything works fine. The first 15 bytes
are identical and after the first two bytes are read,
tellg() returns a position of 2 bytes into the file.

If I delete everything in blocks.pgm after the first 15
bytes it seems to work just fine. I don't understand how
bytes that should not be read could be affecting the tellg
() function.

Chris

Nov 16 '05 #1
1 4310
Chris wrote:
I am reading in image files in a program and I read in
the header in ascii mode and the data in binary mode.
The problem is, sometimes tellg() gives me a completely
incorrect result and sometimes it is just fine. It is
quite annoying because there is no other good way to read
these file and I think it is a problem with Visual C++,
since it works just fine when I compile it using g++ on a
Linux system. Here is an example:

char input[200];
std::ifstream fin("blocks.pgm", std::ios::in);


You're not using standard IOStreams, but anyway - add std::ios::binary to
the flags.

-cd
Nov 16 '05 #2

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

4
by: hall | last post by:
Hi. I ran across a bug in one of my problems and after spending some time tracking it down i found that the problem arose in a piece of code that essentially did this: ----------- ifstream...
6
by: Eivind Grimsby Haarr | last post by:
I know that this has been posted before on several other newsgroups, but I need to make sure I got this right, so I hope you can forgive me for posting this. In MVSC6.0, and also in several...
3
by: Jason | last post by:
I wrote a piece of code that reads read in about 1000 int values from a text file. I put a cout statement to verify that the input in the code was working as anticipated. It seems to work fine...
3
by: jois.de.vivre | last post by:
Hi, I'm trying to write to an ofstream, and for some reason it fails. I know I can check it with fail() or bad(), but it gives me no useful information as to why it fails. Are there any C++...
7
by: Hamburgpear | last post by:
Dear All, Is it possible to reset the value of xxx.peek() after it reachs EOF ? Regards HP
0
by: Chris | last post by:
I am reading in image files in a program and I read in the header in ascii mode. The problem is, sometimes tellg () gives me a completely incorrect result and sometimes it is just fine. Here is...
7
by: zhouchengly | last post by:
when I use the following code to get integer values from file: void getIntegers() { vector<ItemType items; ifstream ifs("test.dat"); //¿¼ÂÇΪitemsÒ»´Î·ÖÅä¿Õ¼ä¡£ ItemType item ; while(...
3
by: toton | last post by:
Hi, I want to unread a few things while I am reading a file. One solution I know is putback the characters read to the buffer. But as I need frequent moving file pointer , to a few steps back, I...
2
by: im2cre8iv | last post by:
Here is my code where I am receiving the error: #include <fstream> #include "BinaryTree.h" using namespace std; Node* BinaryTree::MakeTree(ifstream& infile) { char name; infile>>name;
0
by: DolphinDB | last post by:
The formulas of 101 quantitative trading alphas used by WorldQuant were presented in the paper 101 Formulaic Alphas. However, some formulas are complex, leading to challenges in calculation. Take...
0
by: DolphinDB | last post by:
Tired of spending countless mintues downsampling your data? Look no further! In this article, you’ll learn how to efficiently downsample 6.48 billion high-frequency records to 61 million...
0
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, we are pleased to welcome back...
1
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, we are pleased to welcome back...
0
by: jfyes | last post by:
As a hardware engineer, after seeing that CEIWEI recently released a new tool for Modbus RTU Over TCP/UDP filtering and monitoring, I actively went to its official website to take a look. It turned...
0
by: ArrayDB | last post by:
The error message I've encountered is; ERROR:root:Error generating model response: exception: access violation writing 0x0000000000005140, which seems to be indicative of an access violation...
1
by: PapaRatzi | last post by:
Hello, I am teaching myself MS Access forms design and Visual Basic. I've created a table to capture a list of Top 30 singles and forms to capture new entries. The final step is a form (unbound)...
0
by: Defcon1945 | last post by:
I'm trying to learn Python using Pycharm but import shutil doesn't work
0
by: Faith0G | last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.