C++
This presentation is the property of its rightful owner.
Sponsored Links
1 / 22

C++ PowerPoint PPT Presentation


  • 99 Views
  • Uploaded on
  • Presentation posted in: General

C++. Lecture 8 Monday, 25 August 2005. I/O, File, and Preprocessing. An in-depth review of stream input/output File handling in C++ C++ preprocessing. IO Stream Library. <iostream> -- basic I/O <iomanip> -- formatted I/O <fstream> -- file

Download Presentation

C++

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


C

C++

Lecture 8

Monday, 25 August 2005


I o file and preprocessing

I/O, File, and Preprocessing

  • An in-depth review of stream input/output

  • File handling in C++

  • C++ preprocessing


Io stream library

IO Stream Library

  • <iostream> -- basic I/O

  • <iomanip> -- formatted I/O

  • <fstream> -- file

  • Take a look of iostream.h (at C:\MinGW\include\c++\)


Stream i o classes

Stream I/O Classes

ios

istream

ostream

iostream

ifstream

ofstream


Standard stream objects

Standard Stream Objects

  • cin – istream class, “tied to” (connected to) the standard input device (keyboard)

  • cout – ostream class, “tied to” standard output device

  • cerr – ostream class, standard error output, unbuffered

  • clog – ostream class, also to standard error, buffered


And overloaded operators

<< and >> Overloaded Operators

  • cout << A; // type need not specify

  • [compare with printf(“%d”, A);]

  • cout << A << B; // cascading

  • cout << endl; // newline

  • cout << flush; // forced buffer flush


Put and get member functions

Put and Get Member Functions

  • cout.put(‘A’); // print a single char

  • cin.get( ); // get a single char

  • cin.getline(buffer, SIZE);

    // read a line of characters

  • cin.eof(); // test for end-of-file

C.f. Fig. 11.12 (old)


Unformatted i o

Unformatted I/O

  • cout.write(buffer, SIZE)

  • cin.read(buffer, SIZE)

  • The memory contents pointed by buffer is read/write.

  • In formatted I/O, contents are translated into printable ASCII sequence


Printing in other bases

Printing in Other Bases

  • cout << n;

  • cout << hex << n;

  • cout << dec << n;

  • cout << oct << n;

  • cout << setbase(10) << n;


Format states

Format States

  • setiosflag(iso::S)

  • Where S can be skipws, left, right, dec, oct, showpoint, uppercase, fixed etc.


Write in a file

Write in a File

  • #include <iostream>

  • #include <fstream>

  • ofstream fileobj(“f.dat”, ios::out); // create output file object

  • fileobj << data; // output to file

  • ofstream is derived class from ostream


Read in a file

Read in a File

  • #include <iostream>

  • #include <fstream>

  • ifstream fileobj(“f.dat”, ios::in); // create input file object

  • fileobj >> data; // read from file

  • ifstream is derived class of istream

C.f. Fig. 14.7


Open and close file

Using scope rule

{

ofstream myfile(“dat.d”,

ios::out);

myfile << x;

}

Explicit open and close

ofstream myfile;

myfile.open(“dat.d”, ios::out);

myfile << x;

myfile.close();

Open and Close File


Sequential v s random access of files

Sequential v.s. Random Access of Files

  • Normally, cin or cout or file stream is used sequentially

  • Using the stream member functions seekp( ) and write( ), we can do random file access


Preprocessing

Preprocessing

  • Before sending the source file to the compiler proper, C/C++ passes the source code to preprocessor (e.g., cpp or cc –E on Unix) to process text related to preprocessing derivatives, e.g.

  • #define …


Include preprocessor directive

#include Preprocessor Directive

  • #include <filename> // standard

    // location

  • Or

  • #include “filename” // user

    // working directory

  • A copy of the file is “physically” included


Define directive

#define Directive

  • #define CURRENT_H

  • #define PI 3.14159

  • #define SQ(x) ((x)*(x))

  • Any identifier in #define is replaced by replacement text


Define examples

#define Examples

  • #define SQ1(x) ((x)*(x))

  • #define SQ2(x) x*x

  • Then

    B = SQ1(a+1); C = SQ2(a+2);

  • becomes

    B = ((a+1)*(a+1));

    C = a+2*a+2;


Conditional compilation

Conditional Compilation

#if defined(IBM)

… do such and such

#elif // optional

… do …

#else // optional

#endif


And operators

# and ## Operators

  • # converts text to string

  • ## concatenates two tokens

    #define H(x) cout << “Hi,” #x

    #define C(x,y) x ## y

    H(JS); z = C(x, 5);

  • becomes

    cout << “Hi,” “JS”; z = x5;


Tutorial problems

Tutorial Problems

  • Will the following program works? (Read a string and output the string)

    #include <string>

    int main()

    { string s;

    cin >> s;

    cout << “length of the string is ” >> s.size() >> endl;

    }


A matrix class

A Matrix Class

  • Discuss varies possible ways of implementing a matrix class, discuss the issue of efficiency, memory management, operator overloading, etc.


  • Login