You are on page 1of 26

File I/O in C++

Using
UsingInput/Output
Input/OutputFiles
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
General File I/O Steps
• Declare a file name variable
• Associate the file name variable with the
disk file name
• Open the file
• Use the file
• Close the file
Using
UsingInput/Output
Input/OutputFiles
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).
Stream
StreamI/O
I/OLibrary
LibraryHeader
HeaderFiles
Files
• Note: There is no “.h” on standard header files :
<fstream>
• iostream -- contains basic information required for all
stream I/O operations
• iomanip -- contains information useful for performing
formatted I/O with parameterized stream manipulators
• fstream -- contains information for performing file I/O
operations
• strstream -- contains information for performing in-
memory I/O operations (i.e., into or from strings in
memory)
Classes
Classesfor
forStream
StreamI/O
I/Oin
inC++
C++

• ios is the base class.


• istream and ostream inherit from ios
• ifstream inherits from istream (and ios)
• ofstream inherits from ostream (and ios)
• iostream inherits from istream and ostream (& ios)
• fstream inherits from ifstream, iostream, and ofstream
C++
C++streams
streams
#include <fstream>
int main (void)
{
//Local declarations
ifstream fsIn;
ofstream fsOut;
.
.
.
return 0;
}
Object and Member Functions
Object and Member Functions

Stream handle Member Function


Name Name

input_stream.open("numbers.dat")

File
Calling Dot Name
Object Operator
File
FileI/O
I/OExample:
Example:Writing
Writing
#include <fstream>
using namespace std;
int main(void)
{
ofstream outFile(“fout.txt");
outFile << "Hello World!";
outFile.close();
return 0;
}
File
FileI/O
I/OExample:
Example:Writing
Writing
#include <fstream>
using namespace std;

int main(void)
{
ofstream outFile;
outFile.open(“fout.txt”);
outFile << “First line”; //behave just like cout
outFile.close();
outFile<<“Another line”<<endl; //??
return 0;
}
File
FileI/O
I/OExample:
Example:Reading
Reading
#include <iostream>
#include <fstream>

int main(void)
{
ifstream openFile(“data.txt"); //open a text file data.txt
char ch;
while(!OpenFile.eof())
{
OpenFile.get(ch);
cout << ch;
}
OpenFile.close();

return 0;
}
File I/O Example: Reading
File I/O Example: Reading
#include <iostream>
#include <fstream>
#include <string>

int main(void)
{
ifstream openFile(“data.txt"); //Declare and open a text file
string line;

while(!openFile.eof())
{
getline(openFile,line);//fetch line from data.txt and put it in a string
cout << line;
}
openFile.close();
return 0;
}
File
FileI/O
I/OExample:
Example:Reading
Reading
#include <iostream>
#include <fstream>
#include <string>

int main(void)
{
ifstream openFile(“data.txt"); //open a text file data.txt
string line;

if(openFile.is_open()){ //
while(!openFile.eof()){
getline(openFile,line);//read a line from data.txt and put it in a string
cout << line;
}
else{
cout<<“File does not exist!”<<endl;
exit(1);}
}
openFile.close();
return 0;
}
More
MoreInput
InputFile-Related
File-RelatedFunctions
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.
More
MoreOutput
OutputFile-Related
File-RelatedFunctions
Functions
• ofstream fsOut;
• fsOut.open(const char[] fname)
– connects stream fsOut to the external file
fname.
• fsOut.put(char character)
– inserts character character to the output
stream fsOut.
• fsOut.eof()
– tests for the end-of-file condition.
File
FileOpen
OpenMode
Mode
Name Description
ios::in Open file to read
ios::out Open file to write
ios::app All the date you write, is put at the end of the file.
It calls ios::out
ios::ate All the date 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
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
Dealing
Dealingwith
withBinary
Binaryfiles
files
• Functions for binary file handling
get(): read a byte and point to the next byte to read
put(): write a byte and point to the next location for write
read(): block reading
write(): block writing
Dealing with Binary files
Dealing with Binary files
• Some useful functions
seekg():Go to a specific position when reading
seekp():Go to a specific position when writing
tellg(): Retunrs an int type, that shows the current position of the
inside-pointer. This one works only when you read a file.
tellp(): The same as tellg() but used when we write in a file.
flush():Save data from the buffer to the output file.
Binary File I/O Examples
Binary File I/O Examples
//Example 1: Using get() and put()
#include <iostream>
#include <fstream>
void main()
{
fstream File("test_file",ios::out | ios::in | ios::binary);
char ch;
ch='o';
File.put(ch); //put the content of ch to the file
File.seekg(ios::beg); //go to the beginning of the file
File.get(ch); //read one character
cout << ch << endl; //display it
File.close();
}
Binary
BinaryFile
FileI/O
I/OExamples
Examples
//Example 2: Using read() and write()

#include <fstream.h>
#include <string.h>
void main()
{
fstream File("test_file.txt",ios::out | ios::in | ios::binary);
char arr[13];
strcpy(arr,"Hello World!"); //put Hello World! into the array
File.write(arr,5); //put the first 5 symbols into the file- "Hello"
File.seekg(ios::beg); //go to the beginning of the file
static char read_array[10]; //I will put the read data, here
File.read(read_array,3); //read the first 3 symbols- "Hel"
cout << read_array << endl; //display them
File.close();
}
More
MoreBinary
BinaryFile
FileI/O
I/OExamples
Examples

#include <fstream>
void main()
{
//if we have "Hello" in test_file.txt
ifstream File("test_file.txt");
char arr[10];
File.read(arr,10);

//this should return 5, as Hello is 5 characters long


cout << File.tellg() << endl;
File.close();
}
Summary
Summaryof ofInput
Input
File-Related Functions
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
Summaryof ofOutput
Output
File-Related Functions
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
Questions ? ?
Thank You…
Presented By:
Pranav Gurjer
Prasad Kulkarni
Praveen Kanthi

You might also like