Cpp8

Download as
 PPT
Presentation Description 

No description available

Views: 14
Like it  ( Likes) Dislike it  ( Dislikes)
Added: April 29, 2009 This Presentation is Public 
Presentation Category : Education All Rights Reserved
Presentation Statistics
Views on authorSTREAM: 12 | Views from Embeds: 2
- 1 views

Others - 1 views
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 -- basic I/O -- formatted I/O -- 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 :> 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 #include … 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 #include … 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 // 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 int main() { string s; cin >> s; cout > 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.