0% found this document useful (0 votes)
32 views26 pages

Chapter 11 - Files

This document provides an introduction to file handling in C++ programming, covering the functions of files, file modes, and basic file input/output operations. It explains the use of different file stream classes such as ifstream, ofstream, and fstream, along with examples of reading from and writing to files. Additionally, it outlines the steps for file I/O operations and the importance of validating file access.

Uploaded by

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

Chapter 11 - Files

This document provides an introduction to file handling in C++ programming, covering the functions of files, file modes, and basic file input/output operations. It explains the use of different file stream classes such as ifstream, ofstream, and fstream, along with examples of reading from and writing to files. Additionally, it outlines the steps for file I/O operations and the importance of validating file access.

Uploaded by

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

BIT1C013

INTRODUCTION TO PROGRAMMING

Chapter 11
Files
Learning Objectives

At the end of the session, student should be able to:

▪ Describe the functions of files in C++


▪ Understand the modes and its function in files
▪ Write a simple program for creating and accessing the file
Using Input/Output Files
A computer file
▪ is stored on a secondary storage device (e.g., disk);

▪ is permanent;

▪ can be used to
▪ provide input data to a program
▪ or receive output data from a program
▪ or both;

▪ should reside in Project directory for easy access;

▪ must be opened before it is used.


General File I/O Steps
1. Include the header file fstream in the program.

2. Declare file stream variables.

3. Associate the file stream variables with the input/output


sources.

4. Open the file

5. Use the file stream variables with >>, <<, or other input/output
functions.

6. Close the file.


Using Input/Output Files
▪ stream - a sequence of characters
▪ interactive (iostream)
▪ cin - input stream associated with keyboard.
▪ cout - output stream associated with display

▪ file (fstream)
▪ ifstream - defines new input stream (normally associated
with a file).
▪ ofstream - defines new output stream (normally
associated with a file).
▪ fstream - it provides member functions for opening,
reading, writing, and closing files.
Using Input/Output Files
▪ ifstream (input file stream) is a class derived from the istream
base class, and it is used for reading data from files. The ifstream
class provides functionalities to open, read, and close files.

▪ ofstream (output file stream) is a class derived from the ostream


base class, and it is used for writing data to files. The ofstream
class provides functionalities to create, open, write, and close
files.

▪ fstream is a class derived from both ifstream and ofstream, and


it provides functionalities for both reading and writing data to
files. It combines the functionalities of ifstream (input file stream)
and ofstream (output file stream) into a single class.
Stream I/O Library Header Files

▪ Note: There is no “.h” on standard header files : <fstream>

▪ iostream - contains basic information required for all stream


I/O operations

▪ fstream - contains information for performing file I/O


operations
C++ Streams
//Add additional header files you use
#include <fstream>
int main ()
{ /* Declare file stream variables such as the following */
ifstream fsIn;//input
ofstream fsOut; // output
fstream both //input & output

//Open the files


fsIn.open("prog1.txt"); //open the input file
fsOut.open("prog2.txt"); //open the output file
//Code for data manipulation
.
.
//Close files
fsIn.close();
fsOut.close();
return 0;
}
Object and Member Functions

input_stream.open("numbers.txt“)
Open()

▪ Opening a file associates a file stream variable declared in the


program with a physical file at the source, such as a disk.
▪ In the case of an input file:
▪ the file must exist before the open statement executes.
▪ If the file does not exist, the open statement fails and the input
stream enters the fail state
▪ An output file does not have to exist before it is opened;
▪ if the output file does not exist, the computer prepares an
empty file for output.
▪ If the designated output file already exists, by default, the old
contents are erased when the file is opened.
Validate the file before trying to access
First method Second method

By checking the stream By using bool is_open() function.


variable;

If ( ! Mystream.is_open()) {
If ( ! Mystream) Cout << “File is not open.\n ”;
{ }
Cout << “Cannot open file.\n ”;
}
File I/O Example: Open the file with validation
First Method (use the constructor) Second Method ( use Open function)

#include <fstream> #include <fstream>


using namespace std; using namespace std;
int main() int main()
{ {
//declare and automatically open the file //declare output file variable ofstream outFile;
ofstream outFile(“fout.txt"); // open an exist file fout.txt
// Open validation outFile.open(“fout.txt”);
if(! outFile) { // Open validation
Cout << “Cannot open file.\n ”; if(! outFile.is_open() ) {
return 1; Cout << “Cannot open file.\n ”;
} return 1;
return 0; }
} return 0;
}
More Input File-Related Functions

▪ ifstream fsin;
▪ fsin.open(const char[] fname)
▪ connects stream fsin to the external file fname.
▪ fsin.get(char character)
▪ extracts next character from the input stream fsin and
places it in the character variable character.
▪ fsin.eof()
▪ tests for the end-of-file condition.
File I/O Example: Reading
Read char by char Read a line

#include <iostream> #include <iostream>


#include <fstream> #include <fstream>
#include <string>
int main()
{//Declare and open a text file int main()
ifstream openFile(“data.txt"); {//Declare and open a text file
char ch; ifstream openFile("data.txt");
//do until the end of file string line;
while( ! OpenFile.eof() ) while(!openFile.eof())
{ {//fetch line from data.txt and put it in a string
OpenFile.get(ch); // get one character getline(openFile, line);
cout << ch; // display the character cout << line;
} }
OpenFile.close(); // close the file openFile.close(); // close the file
return 0;
return 0; }
}
File I/O Example: Writing
First Method (use the constructor) Second Method ( use Open function)

#include <fstream> #include <fstream>


using namespace std; using namespace std;
int main() int main()
{/* declare and automatically open the file*/ {// declare output file variable
ofstream outFile("fout.txt"); ofstream outFile;
// open an exist file fout.txt
//behave just like cout, put the word into the file outFile.open("fout.txt”);
outFile << "Hello World!";
//behave just like cout, put the word into the file
outFile.close(); outFile << "Hello World!";

return 0; outFile.close();
}
return 0;
}
File Open Mode
Name Description
ios::in Open file to read
ios::out Open file to write
ios::app All the data you write, is put at the end of the file. It calls
ios::out
ios::ate All the data you write, is put at the end of the file. It does not
call ios::out
ios::trunc Deletes all previous content in the file. (empties the file)

ios::nocreate If the file does not exists, opening it with the open() function
gets impossible.
ios::noreplace If the file exists, trying to open it with the open() function,
returns an error.
ios::binary Opens the file in binary mode.
File Open Mode
ios::in
▪ Input mode: Used for reading data from a file. The file must exist;
otherwise, the opening will fail.

ios::out
▪ Output mode: Used for writing data to a file. If the file already exists,
its contents will be truncated. If the file doesn't exist, a new file will
be created.

ios::ate
▪ At end mode: Used to position the file pointer at the end of the file
immediately after opening it. This is useful when you want to both
read and write data to the file without overwriting its contents.
File Open Mode
#include <fstream>
int main(void)
{
ofstream outFile("file1.txt", ios::out);
outFile << "That's new!\n";
outFile.close();
Return 0;
}
If you want to set more than one open mode, just use the OR operator- |.
This way:

ios::ate | ios::binary
Summary of Input File-Related Functions

#include <fstream>
ifstream fsIn;
▪ fsIn.open(const char[] fname)
▪ connects stream fsIn to the external file fname.
▪ fsIn.get(char& c)
▪ extracts next character from the input stream fsIn and places it in
the character variable c.
▪ fsIn.eof()
▪ tests for the end-of-file condition.
▪ fsIn.close()
▪ disconnects the stream and associated file.
▪ fsIn >> c; //Behaves just like cin
Summary of Output File-Related Functions

#include <fstream>
ofstream fsOut;
▪ fsOut.open(const char[] fname)
▪ connects stream fsOut to the external file fname.
▪ fsOut.put(char c)
▪ inserts character c to the output stream fsOut.
▪ fsOut.eof()
▪ tests for the end-of-file condition.
▪ fsOut.close()
▪ disconnects the stream and associated file.
▪ fsOut << c; //Behaves just like cout
File format

▪ In C++ files we (read from/ write to) them as a stream of characters


▪ What if I want to write or read numbers ?
Example writing to file
#include <iostream>
#include <fstream>
using namespace std;
void main()
{
ofstream outFile;
// open an exist file fout.txt
outFile.open("number.txt",ios::app);

if (!outFile.is_open())
{ cout << " problem with opening the file ";}
else
{outFile <<200 <<endl ;
cout << "done writing" <<endl;}

outFile.close();

}
Example Reading from file
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;
void main()
{//Declare and open a text file
ifstream INFile("number.txt");
string line;
int total=0;
while(! INFile.eof())
{
getline(INFile, line);
//converting line string to int
stringstream(line) >> total;
cout << line <<endl;
cout <<total +1<<endl;}
INFile.close(); // close the file
}
*** The End ***

You might also like