Article: Q146445
Product(s): Microsoft C Compiler
Version(s): 4.0
Operating System(s):
Keyword(s): kbCompiler kbCPPonly kbVC kbVC400 kbVC410 kbVC420 kbVC500 kbVC600
Last Modified: 30-JUL-2001
-------------------------------------------------------------------------------
The information in this article applies to:
- The C/C++ Compiler (CL.EXE), included with:
- Microsoft Visual C++, 32-bit Editions, versions 4.0, 4.1
- Microsoft Visual C++, 32-bit Enterprise Edition, version 4.2
- Microsoft Visual C++, 32-bit Professional Edition, version 4.2
- Microsoft Visual C++, 32-bit Enterprise Edition, version 5.0
- Microsoft Visual C++, 32-bit Professional Edition, version 5.0
- Microsoft Visual C++, 32-bit Enterprise Edition, version 6.0
- Microsoft Visual C++, 32-bit Professional Edition, version 6.0
- Microsoft Visual C++, 32-bit Learning Edition, version 6.0
-------------------------------------------------------------------------------
SYMPTOMS
========
The istream::seekg() function does not reset the EOF (end of file) state when
the stream pointer is already at EOF.
RESOLUTION
==========
To work around this problem, call ios::clear() for the stream before calling
istream::seekg().
STATUS
======
This behavior is by design.
MORE INFORMATION
================
You don't need to call clear(), if the stream pointer is not already at EOF.
Sample Code
-----------
/* Compile options needed: None
*/
// Input: A file with the name test.txt containing some characters.
#include <fstream.h>
#include <assert.h>
void main()
{
fstream in("test.txt", ios::in);
char c;
int i = 0;
// Count characters in file
while (in.get(c))
++i;
assert(in.eof());
// Reset read pointer to beginning of file
in.clear();
in.seekg(0, ios::beg);
// Check that file can now be read.
// Fails without the in.clear() statement above.
assert(!in.eof());
}
Additional query words:
======================================================================
Keywords : kbCompiler kbCPPonly kbVC kbVC400 kbVC410 kbVC420 kbVC500 kbVC600
Technology : kbVCsearch kbAudDeveloper kbCVCComp
Version : 4.0
Issue type : kbprb
=============================================================================