fstream problems

Phyllis Tedford ptedford@sci.tamucc.edu
Mon Aug 28 20:09:00 GMT 2006


I'm not sure I'm sending my question/problem to the right place.  If not,
maybe you can suggest who I might contact.  Anyway...

One of my colleagues found a problem with a sample program I had posted in
my lecture notes.  The program involved using an fstream object for both
input and output to/from a file.  Here's the relevant chunk of code:

fstream aFile;
aFile.open(“data.txt”, ios::in | ios::out);
if (!aFile)
   cout << “Oops! Didn’t open!”;

aNewLine = “A new record.”; //aNewLine and oneLine are string class vars
aFile << aNewLine << ‘\n’;
getline(aFile, oneLine);
while (aFile)
   cout << oneLine << ‘\n’;
   getline(aFile, oneLine);

The "data.txt" file contains:
Record 1
Record 2
Record 3
Record 4

When I/we run the program as written, nothing is displayed.  In fact, it
never goes into the "while" loop (even though the file stream is still
"good" - I checked).  After the program executes, the file contains the
A new record
d 2
Record 3
Record 4

After mucking about with various debugging attempts, I finally tried using
"tellg" and "tellp" to find out where the read/write marker was.  Here's the
modified code (sans opening the file):

aNewLine = "A new record.";
aFile << aNewLine << '\n';
getline(aFile, oneLine);
while (aFile)
   cout << oneLine << '\n';
   getline(aFile, oneLine);

This gave the results the original program was supposed to!!  My question is

You might need to know that we're running a gnu compiler (v. 3.4.5) on a
UNIX server.  Prior to some upgrades and such that were done about 10 days
ago, the original program ran just fine.  Any input/suggestions/explanations
you might provide would be greatly appreciated.



Phyllis Tedford
Instructor - Computer Science
Computing and Math Sciences Dept.
College of Science & Technology
Texas A&M University - Corpus Christi
6300 Ocean Drive
Corpus Christi, TX 78412
Ph: (361) 825-3711

More information about the Gcc-help mailing list