file i/o in c++

24
File I/O in C++

Upload: denise

Post on 10-Jan-2016

20 views

Category:

Documents


0 download

DESCRIPTION

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; - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: File I/O in C++

File I/O in C++

Page 2: 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.

Page 3: File I/O in C++

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

Page 4: File I/O in C++

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

Page 5: File I/O in C++

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)

Page 6: File I/O in 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

Classes for Stream I/O in C++

Page 7: File I/O in C++

C++ streams

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

Page 8: File I/O in C++

input_stream.open("numbers.dat")

Stream handle

Name

Calling

Object

Dot

Operator

Member Function

Name

File

Name

Object and Member Functions

Page 9: File I/O in C++

File I/O Example: Writing

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

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

}

Page 10: File I/O in C++

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;

}

Page 11: File I/O in C++

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;}

Page 12: File I/O in C++

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;}

Page 13: File I/O in C++

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;}

Page 14: File I/O in C++

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.

Page 15: File I/O in C++

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.

Page 16: File I/O in C++

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.

Page 17: File I/O in C++

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

Page 18: File I/O in C++

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

Page 19: File I/O in C++

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.

Page 20: File I/O in C++

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

}

Page 21: File I/O in C++

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

}

Page 22: File I/O in C++

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

}

Page 23: File I/O in C++

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

Page 24: File I/O in C++

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