Cpp8

Views:
 
Category: Education
     
 

Presentation Description

No description available.

Comments

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 : 

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

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.