file i/o in c++. using input/output files a computer file is stored on a secondary storage device...

Post on 17-Dec-2015

227 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

File I/O in C++

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

• 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 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).

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 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)

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

Classes for Stream I/O in C++

C++ streams

#include <fstream>int main (void){ //Local declarations ifstream fsIn; ofstream fsOut; . . . return 0;}

input_stream.open("numbers.dat")

Stream handle

Name

Calling

Object

Dot

Operator

Member Function

Name

File

Name

Object and Member Functions

File I/O Example: Writing

#include <fstream>using namespace std;int main(void){

ofstream outFile(“fout.txt");outFile << "Hello World!";outFile.close();return 0;

}

File I/O Example: Writing#include <fstream>using namespace std;

int main(void){

ofstream outFile; outFile.open(“fout.txt”);

outFile << “First line”; //behave just like coutoutFile.close();

outFile<<“Another line”<<endl; //??return 0;

}

File I/O Example: Reading#include <iostream>#include <fstream>

int main(void){

ifstream openFile(“data.txt"); //open a text file data.txtchar ch;while(!OpenFile.eof()){

OpenFile.get(ch);cout << ch;

}OpenFile.close();

return 0;}

File I/O Example: Reading#include <iostream>#include <fstream>#include <string>

int main(void){

ifstream openFile(“data.txt"); //Declare and open a text filestring line;

while(!openFile.eof()){getline(openFile,line);//fetch line from data.txt and put it in a stringcout << line;}openFile.close();

return 0;}

File I/O Example: Reading#include <iostream>#include <fstream>#include <string>

int main(void){

ifstream openFile(“data.txt"); //open a text file data.txtstring 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 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.

More Output File-Related 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 Open ModeName 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#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 with Binary 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

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

//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 fileFile.seekg(ios::beg); //go to the beginning of the fileFile.get(ch); //read one charactercout << ch << endl; //display itFile.close();

}

Binary File I/O 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 arrayFile.write(arr,5); //put the first 5 symbols into the file- "Hello"File.seekg(ios::beg); //go to the beginning of the filestatic char read_array[10]; //I will put the read data, hereFile.read(read_array,3); //read the first 3 symbols- "Hel"cout << read_array << endl; //display themFile.close();

}

More Binary File I/O Examples

#include <fstream>void main(){

//if we have "Hello" in test_file.txtifstream 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 of InputFile-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 OutputFile-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

top related