0% found this document useful (0 votes)
106 views

Learning Objectives: C++ I/O Streams. Reading and Writing Sequential Files. Reading and Writing Random Access Files

This document discusses C++ file processing and input/output streams. It covers reading from and writing to both sequential and random access files in C++. Several code examples are provided that demonstrate opening, reading from, writing to, and closing files using file streams in C++. The limitations of sequential files for updating and random access are also discussed.

Uploaded by

Ayesha Khan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
106 views

Learning Objectives: C++ I/O Streams. Reading and Writing Sequential Files. Reading and Writing Random Access Files

This document discusses C++ file processing and input/output streams. It covers reading from and writing to both sequential and random access files in C++. Several code examples are provided that demonstrate opening, reading from, writing to, and closing files using file streams in C++. The limitations of sequential files for updating and random access are also discussed.

Uploaded by

Ayesha Khan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 16

CPSC 231 D.H.

C++ File
Processing
1
Learning Objectives
C++ I/O streams.
Reading and writing sequential files.
Reading and writing random access files.
CPSC 231 D.H. C++ File
Processing
2
C++ Files and Streams
C++ views each files as a sequence of bytes.
Each file ends with an end-of-file marker.
When a file is opened, an object is created
and a stream is associated with the object.
To perform file processing in C++, the
header files <iostream.h> and <fstream.h>
must be included.
<fstream.> includes <ifstream> and
<ofstream>
CPSC 231 D.H. C++ File
Processing
3
Creating a sequential file
// Fig. 14.4: fig14_04.cpp D&D p.708
// Create a sequential file
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
int main()
{
// ofstream constructor opens file
ofstream outClientFile( "clients.dat", ios::out );

if ( !outClientFile ) { // overloaded ! operator
cerr << "File could not be opened" << endl;
exit( 1 ); // prototype in stdlib.h
}
CPSC 231 D.H. C++ File
Processing
4
Sequential file
cout << "Enter the account, name, and balance.\n"
<< "Enter end-of-file to end input.\n? ";
int account;
char name[ 30 ];
float balance;

while ( cin >> account >> name >> balance ) {
outClientFile << account << ' ' << name
<< ' ' << balance << '\n';
cout << "? ";
}

return 0; // ofstream destructor closes file
}
CPSC 231 D.H. C++ File
Processing
5
Question.
What does the above program do?
CPSC 231 D.H. C++ File
Processing
6
How to open a file in C++ ?

Ofstream outClientFile(clients.dat, ios:out)
OR
Ofstream outClientFile;
outClientFile.open(clients.dat, ios:out)

CPSC 231 D.H. C++ File
Processing
7
File Open Modes
ios:: app - (append) write all output to the end of
file
ios:: ate - data can be written anywhere in the file
ios:: binary - read/write data in binary format
ios:: in - (input) open a file for input
ios::out - (output) open afile for output
ios: trunc -(truncate) discard the files contents if
it exists
CPSC 231 D.H. C++ File
Processing
8
File Open Modes cont.

ios:nocreate - if the file does NOT exists, the
open operation fails
ios:noreplace - if the file exists, the open
operation fails
CPSC 231 D.H. C++ File
Processing
9
How to close a file in C++?
The file is closed implicitly when a
destructor for the corresponding object is
called
OR
by using member function close:
outClientFile.close();
CPSC 231 D.H. C++ File
Processing
10
Reading and printing a
sequential file
// Reading and printing a sequential file
#include <iostream.h>
#include <fstream.h>
#include <iomanip.h>
#include <stdlib.h>
void outputLine( int, const char *, double );
int main()
{
// ifstream constructor opens the file
ifstream inClientFile( "clients.dat", ios::in );

if ( !inClientFile ) {
cerr << "File could not be opened\n";
exit( 1 );
}
CPSC 231 D.H. C++ File
Processing
11
int account;
char name[ 30 ];
double balance;

cout << setiosflags( ios::left ) << setw( 10 ) << "Account"
<< setw( 13 ) << "Name" << "Balance\n";

while ( inClientFile >> account >> name >> balance )
outputLine( account, name, balance );

return 0; // ifstream destructor closes the file
}

void outputLine( int acct, const char *name, double bal )
{
cout << setiosflags( ios::left ) << setw( 10 ) << acct
<< setw( 13 ) << name << setw( 7 ) << setprecision( 2 )
<< resetiosflags( ios::left )
<< setiosflags( ios::fixed | ios::showpoint )
<< bal << '\n';
}



CPSC 231 D.H. C++ File
Processing
12
File position pointer
<istream> and <ostream> classes provide
member functions for repositioning the file
pointer (the byte number of the next byte in the
file to be read or to be written.)
These member functions are:
seekg (seek get) for istream class
seekp (seek put) for ostream class
CPSC 231 D.H. C++ File
Processing
13
Examples of moving a file
pointer
inClientFile.seekg(0) - repositions the file get pointer to the
beginning of the file
inClientFile.seekg(n, ios:beg) - repositions the file get
pointer to the n-th byte of the file
inClientFile.seekg(m, ios:end) -repositions the file get
pointer to the m-th byte from the end
of file
nClientFile.seekg(0, ios:end) - repositions the file get
pointer to the end of the file
The same operations can be performed with <ostream>
function member seekp.

CPSC 231 D.H. C++ File
Processing
14
Member functions tellg() and
tellp().
Member functions tellg and tellp are provided
to return the current locations of the get and put
pointers, respectively.
long location = inClientFile.tellg();
To move the pointer relative to the current
location use ios:cur
inClientFile.seekg(n, ios:cur) - moves the file
get pointer n bytes forward.

CPSC 231 D.H. C++ File
Processing
15
Updating a sequential file
Data that is formatted and written to a
sequential file cannot be modified
easily without the risk of destroying
other data in the file.
If we want to modify a record of data,
the new data may be longer than the
old one and it could overwrite parts of
the record following it.

CPSC 231 D.H. C++ File
Processing
16
Problems with sequential files
Sequential files are inappropriate for so-
called instant access applications in
which a particular record of information
must be located immediately.
These applications include banking
systems, point-of-sale systems, airline
reservation systems, (or any data-base
system.)

You might also like