1 / 22

C++

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

braith
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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. C++ Lecture 8 Monday, 25 August 2005

  2. I/O, File, and Preprocessing • An in-depth review of stream input/output • File handling in C++ • C++ preprocessing

  3. IO Stream Library • <iostream> -- basic I/O • <iomanip> -- formatted I/O • <fstream> -- file • Take a look of iostream.h (at C:\MinGW\include\c++\)

  4. Stream I/O Classes ios istream ostream iostream ifstream ofstream

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

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

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

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

  9. Printing in Other Bases • cout << n; • cout << hex << n; • cout << dec << n; • cout << oct << n; • cout << setbase(10) << n;

  10. Format States • setiosflag(iso::S) • Where S can be skipws, left, right, dec, oct, showpoint, uppercase, fixed etc.

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

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

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

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

  15. 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 …

  16. #include Preprocessor Directive • #include <filename> // standard // location • Or • #include “filename” // user // working directory • A copy of the file is “physically” included

  17. #define Directive • #define CURRENT_H • #define PI 3.14159 • #define SQ(x) ((x)*(x)) • Any identifier in #define is replaced by replacement text

  18. #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;

  19. Conditional Compilation #if defined(IBM) … do such and such #elif // optional … do … #else // optional … #endif

  20. # 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;

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

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

More Related