Unit 5 Module 2 Data Hierarchy in Object
Unit 5 Module 2 Data Hierarchy in Object
Hierarchical data structure: A way to organize data in a tree-like structure, where each
element has one parent node and zero or more child nodes. The top-level element is the root
node.
.
C++ Stream Classes Structure
L
In C++ there are number of stream classes for defining various streams related with
files and for doing input-output operations. All these classes are defined in the
file iostream.h. Figure given below shows the hierarchy of these classes.
1. ios class is topmost class in the stream classes hierarchy. It is the base class
for istream, ostream, and streambuf class.
2. istream and ostream serves the base classes for iostream class. The
class istream is used for input and ostream for the output.
3. Class ios is indirectly inherited to iostream class using istream and ostream. To
avoid the duplicity of data and member functions of ios class, it is declared as
virtual base class when inheriting in istream and ostream as
1. The ios class: The ios class is responsible for providing all input and output
facilities to all other stream classes.
2. The istream class: This class is responsible for handling input stream. It
provides number of function for handling chars, strings and objects such as get,
getline, read, ignore, putback etc..
Example:
CPP14
#include <iostream>
int main()
char x;
cin.get(x);
cout << x;
Input:
g
Output:
g
The ostream class: This class is responsible for handling output stream. It provides
number of function for handling chars, strings and objects such as write, put etc..
Example:
CPP14
#include <iostream>
int main()
char x;
cout.put(x);
1. Input:
g
Output:
The iostream: This class is responsible for handling both input and output stream as
both istream class and ostream class is inherited into it. It provides function of
both istream class and ostream class for handling chars, strings and objects such
as get, getline, read, ignore, putback, put, write etc..
Example:
CPP14
#include <iostream>
int main()
{
// this function display
cout.write("geeksforgeeks", 5);
Output:
geeks
CPP
#include <iostream>
class demo {
public:
};
int main()
demo d;
cout << "dx = " << d.dx << "\tdy = " << d.dy;
}
Input:
45
Output:
CPP14
#include <iostream>
class demo {
public:
demo()
dx = 4;
dy = 5;
};
int main()
Kinds of Files
Since it's possible for open() to fail, one should always check to make sure there's
a valid file attached
o One easy way is to test the true/false value of the stream object itself. A
stream that is not attached to a valid file will evaluate to "false"
o if (!in1) // if in1 not attached to a valid input source, abort
o {
o cout << "Sorry, bad file.";
o exit(0); // special system call to abort program
o // may require <cstdlib> to be included
o }
When finished with a file, it can be detached from the stream object with the
member function close():
in1.close();
out1.close();
bob.close();
Note that the close function simply closes the file. It does not get rid of the
stream object. The stream object can now be used to attach to another file, if
desired:
in1.open("infile2.txt");
==========================
File Handling through C++ Classes
Streams in C++ :-
We give input to the executing program and the execution program gives back
the output. The sequence of bytes given as input to the executing program and
the sequence of bytes that comes as output from the executing program are
called stream. In other words, streams are nothing but the flow of data in a
sequence.
The input and output operation between the executing program and the devices
like keyboard and monitor are known as “console I/O operation”. The input
and output operation between the executing program and files are known as
“disk I/O operation”.
The I/O system of C++ contains a set of classes which define the file handling
methods. These include ifstream, ofstream and fstream classes. These classes
are derived from fstream and from the corresponding iostream class. These
classes, designed to manage the disk files, are declared in fstream and therefore
we must include this file in any program that uses files. File handling is
essential for data storage and retrieval in applications. The C++ Course
provides practical tutorials on how to manage file operations using C++ classes,
enhancing your file management skills.
1. ios:-
This class is the base class for other classes in this class hierarchy.
This class contains the necessary facilities that are used by all the other derived
classes for input and output operations.
2. istream:-
This class declares input functions such as get(), getline() and read().
3. ostream:-
4. streambuf:-
This class contains a pointer which points to the buffer which is used to manage
the input and output streams.
5. fstreambase:-
This class provides operations common to the file streams. Serves as a base for
fstream, ifstream and ofstream class.
6. ifstream:-
This class provides input operations.
Inherits the functions get(), getline(), read(), seekg() and tellg() functions from
the istream.
7. ofstream:-
Inherits the functions put(), write(), seekp() and tellp() functions from the
ostream.
8. fstream:-
This class provides support for simultaneous input and output operations.
Inherits all the functions from istream and ostream classes through iostream.
9. filebuf:-
We can also use file buffer member function to determine the length of the file.
In C++, files are mainly dealt by using three classes fstream, ifstream, ofstream
available in fstream headerfile.
Now the first step to open the particular file for read or write operation. We can
open file by
For e.g.
ifstream fin(“filename”);
ifstream fin;
fin.open(filename, openmode)
fin.open(“filename”);
Modes :
ios::in input File open for reading: the internal stream buffer supports
input operations.
ios::out output File open for writing: the internal stream buffer
supports output operations.
ios::ate at end The output position starts at the end of the file.
ios::app append All output operations happen at the end of the file,
appending to its existing contents.
ios::trunc truncate Any contents that existed in the file before it is open
are discarded.
ios::nocreate
Do not create
ios::noreplace
Do not replace
Both ios::app and ios::ate take us to the end of the file when it is opened. The
difference between the two modes is that ios :: app allow us to add data to the
end of the file only, while ios :: ate mode permits us add data or to modify the
existing data anywhere in the file.
ifstream ios::in
ofstream ios::out
Examples:
Input :
-1
Output :
Welcome in GeeksforGeeks. Best way to learn things.
/* File Handling with C++ using ifstream & ofstream class object*/
#include <iostream>
fstream classes */
#include <fstream>
// Driver Code
int main()
ofstream fout;
string line;
// by default ios::out mode, automatically deletes
// fout.open("sample.txt", ios::app)
fout.open("sample.txt");
while (fout) {
getline(cin, line);
// Press -1 to exit
if (line == "-1")
break;
fout.close();
// Creation of ifstream class object to read the file
ifstream fin;
fin.open("sample.txt");
fin.close();
return 0;
}
======================
File handling is used to store data permanently in a computer. Using file handling
we can store our data in secondary memory (Hard disk).
How to achieve the File Handling
For achieving file handling we need to follow the following steps:-
STEP 1-Naming a file
STEP 2-Opening a file
STEP 3-Writing data into the file
STEP 4-Reading data from the file
STEP 5-Closing a file.
Streams in C++ :-
We give input to the executing program and the execution program gives back the
output. The sequence of bytes given as input to the executing program and the
sequence of bytes that comes as output from the executing program are called
stream. In other words, streams are nothing but the flow of data in a sequence.
The input and output operation between the executing program and the devices like
keyboard and monitor are known as “console I/O operation”. The input and output
operation between the executing program and files are known as “disk I/O
operation”.
Classes for File stream operations :-
The I/O system of C++ contains a set of classes which define the file handling
methods. These include ifstream, ofstream and fstream classes. These classes are
derived from fstream and from the corresponding iostream class. These classes,
designed to manage the disk files, are declared in fstream and therefore we must
include this file in any program that uses files. File handling is essential for data
storage and retrieval in applications.
1. ios:-
ios stands for input output stream.
This class is the base class for other classes in this class hierarchy.
This class contains the necessary facilities that are used by all the other derived
classes for input and output operations.
2. istream:-
istream stands for input stream.
This class is derived from the class ‘ios’.
This class handle input stream.
The extraction operator(>>) is overloaded in this class to handle input streams
from files to the program execution.
This class declares input functions such as get(), getline() and read().
3. ostream:-
ostream stands for output stream.
This class is derived from the class ‘ios’.
This class handle output stream.
The insertion operator(<<) is overloaded in this class to handle output streams to
files from the program execution.
This class declares output functions such as put() and write().
4. streambuf:-
This class contains a pointer which points to the buffer which is used to manage
the input and output streams.
5. fstreambase:-
This class provides operations common to the file streams. Serves as a base for
fstream, ifstream and ofstream class.
This class contains open() and close() function.
6. ifstream:-
This class provides input operations.
It contains open() function with default input mode.
Inherits the functions get(), getline(), read(), seekg() and tellg() functions from
the istream.
7. ofstream:-
This class provides output operations.
It contains open() function with default output mode.
Inherits the functions put(), write(), seekp() and tellp() functions from the
ostream.
8. fstream:-
This class provides support for simultaneous input and output operations.
Inherits all the functions from istream and ostream classes through iostream.
9. filebuf:-
Its purpose is to set the file buffers to read and write.
We can also use file buffer member function to determine the length of the file.
In C++, files are mainly dealt by using three classes fstream, ifstream, ofstream
available in fstream headerfile.
ofstream: Stream class to write on files
ifstream: Stream class to read from files
fstream: Stream class to both read and write from/to files.
Now the first step to open the particular file for read or write operation. We can open
file by
1. passing file name in constructor at the time of object creation
2. using the open method
For e.g.
Open File by using constructor
ifstream (const char* filename, ios_base::openmode mode = ios_base::in);
ifstream fin(filename, openmode) by default openmode = ios::in
ifstream fin(“filename”);
Open File by using open method
Calling of default constructor
ifstream fin;
fin.open(filename, openmode)
fin.open(“filename”);
Modes :
Member Stands
Constant For Access
ios::ate at end The output position starts at the end of the file.
Do not
ios::nocreate Does not allow to create new file if it does not exist.
create
Do not
ios::noreplace Does not replace old file with new file.
replace
Both ios::app and ios::ate take us to the end of the file when it is opened. The
difference between the two modes is that ios :: app allow us to add data to the end of
the file only, while ios :: ate mode permits us add data or to modify the existing data
anywhere in the file.
Default Open Modes :
ifstream ios::in
ofstream ios::out
// Driver Code
int main()
{
// Creation of ofstream class object
ofstream fout;
string line;
// Press -1 to exit
if (line == "-1")
break;
return 0;
}