slide1
Download
Skip this Video
Download Presentation
C++

Loading in 2 Seconds...

play fullscreen
1 / 22

C++ - PowerPoint PPT Presentation


  • 129 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'C++' - braith


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
slide1

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
<< 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
  • #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
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 // 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 << “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.
ad