Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

C++ Interactive Input and Output - Lecture Notes | CSCI 152, Study notes of Computer Science

Material Type: Notes; Class: Programming Fundamentals II; Subject: Computer Science - CSCI; University: Texas A & M University-Commerce; Term: Unknown 2011;

Typology: Study notes

2009/2010

Uploaded on 03/28/2010

koofers-user-9ic
koofers-user-9ic 🇺🇸

10 documents

1 / 5

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
CSCI 152 C++ INTERACTIVE INPUT AND OUTPUT
Output
The insertion operator << is used for general output of values of multiple types. It has been defined to
output values in a default format for all of the built-in basic C++ types.
Because of the way the operator is defined, it is possible to output multiple values in the same statement by
chaining them together with the << (insertion) operator:
cout << value1 << value2; is the same as cout << value1; cout << value2;
where the variables (or constants or expressions) may be of any of the built-n basic types.
The insertion operator converts values to text form. By default, values are displayed in a width equal to their
size and formatted as follows:
char A type char value, if it represents a printable character, is displayed as a character in a field
one character wide.
int Numeric integer types are displayed as decimal integers in a field just wide enough to hold the
number and, if the value is negative, a minus sign.
float Floating-point types are displayed with 6 places to the right of the decimal, except that
trailing fractional zeros aren't displayed. If there are no significant digits to the right of the
decimal point, printing of the decimal point is suppressed along with the trailing zeros.
The number may be displayed in E-notation, depending upon the value of the number (which
depends on the implementation being used). Again, the field is just wide enough to hold the
number and, for a negative value, a minus sign.
string Strings are displayed in a field width equal in width to the length of the string.
Examples of default field widths (these defaults may vary from one compiler to another):
1 #include <iostream>
2 using namespace std;
3 int main ()
{ // value displayed:
4 cout << '*' << "NCC 1701" << "*\n"; // *NCC 1701*
5 char ch = 'K'; int t = 273;
6 cout << '*' << ch << "*\n"; // *K*
7 cout << '*' << t << "*\n"; // *273*
8 cout << '*' << -t << "*\n"; // *-273*
9 double f1 = 1.200;
10 cout << '*' << f1 << "*\n"; // *1.2*
11 cout << '*' << (f1 + 1.0 / 9.0) << "*\n"; // *1.311111*
12 double f2 = 1.6E7;
13 cout << '*' << f2 << "*\n"; // *16000000*
14 cout << '*' << (f2 + 1.0 / 9.0) << "*\n"; // *16000000.111111*
15 cout << '*' << (f2 + 2.0e5) << "*\n"; // *1.62e+07*
16 float f3 = 2.3e-4;
17 cout << '*' << f3 << "*\n"; // *0.00023*
18 cout << '*' << f3 / 10 << "*\n"; // *2.3e-05*
// The point where the default switches from fixed to scientific is dependent
// on the compiler you use.
19 float f4 = 5.0;
20 cout << '*' << f4 << "*\n"; // *5*
21 return 0;
}
1
pf3
pf4
pf5

Partial preview of the text

Download C++ Interactive Input and Output - Lecture Notes | CSCI 152 and more Study notes Computer Science in PDF only on Docsity!

CSCI 152 C++ INTERACTIVE INPUT AND OUTPUT

Output

The insertion operator << is used for general output of values of multiple types. It has been defined to output values in a default format for all of the built-in basic C++ types. Because of the way the operator is defined, it is possible to output multiple values in the same statement by chaining them together with the << (insertion) operator: cout << value1 << value2; is the same as cout << value1; cout << value2; where the variables (or constants or expressions) may be of any of the built-n basic types. The insertion operator converts values to text form. By default, values are displayed in a width equal to their size and formatted as follows: char A type char value, if it represents a printable character, is displayed as a character in a field one character wide. int Numeric integer types are displayed as decimal integers in a field just wide enough to hold the number and, if the value is negative, a minus sign. float Floating-point types are displayed with 6 places to the right of the decimal, except that trailing fractional zeros aren't displayed. If there are no significant digits to the right of the decimal point, printing of the decimal point is suppressed along with the trailing zeros. The number may be displayed in E-notation, depending upon the value of the number (which depends on the implementation being used). Again, the field is just wide enough to hold the number and, for a negative value, a minus sign. string Strings are displayed in a field width equal in width to the length of the string. Examples of default field widths (these defaults may vary from one compiler to another): 1 #include 2 using namespace std; 3 int main () { // value displayed: 4 cout << '' << "NCC 1701" << "\n"; // NCC 1701 5 char ch = 'K'; int t = 273; 6 cout << '' << ch << "\n"; // K 7 cout << '' << t << "\n"; // 273 8 cout << '' << -t << "\n"; // -273 9 double f1 = 1.200; 10 cout << '' << f1 << "\n"; // 1.2 11 cout << '' << (f1 + 1.0 / 9.0) << "\n"; // 1.311111 12 double f2 = 1.6E7; 13 cout << '' << f2 << "\n"; // 16000000 14 cout << '' << (f2 + 1.0 / 9.0) << "\n"; // 16000000.111111 15 cout << '' << (f2 + 2.0e5) << "\n"; // 1.62e+07 16 float f3 = 2.3e-4; 17 cout << '' << f3 << "\n"; // 0.00023 18 cout << '' << f3 / 10 << "\n"; // 2.3e-05 // The point where the default switches from fixed to scientific is dependent // on the compiler you use. 19 float f4 = 5.0; 20 cout << '' << f4 << "\n"; // 5 21 return 0; }

To override any of C++'s default formatting, C++ provides manipulators which have special meaning in the context of input and/or output constructs. Each causes a corresponding library function to be called, which changes the state of the specified stream as requested. To use any of these manipulators, simply insert them within the I/O stream preceding the value they are to manipulate. Manipulators Having No Parameters (defined in iostream.h ) Manipulator Purpose


dec Sets the stream's radix (base) to decimal (default) endl Inserts a new-line and flushes the stream (output only) (By default, output streams are buffered, so use flush or endl to write out immediately) ends Inserts a null character (output only) flush Flushes the stream (output only) hex Sets the stream's radix (base) to hexadecimal oct Sets the stream's radix (base) to octal ws Skips leading white space on input (default) The following manipulators were added as part of the new ANSI standard: boolalpha Causes boolean values to be input/output as strings true and false instead of 1 and 0 noboolalpha Causes boolean values to be input/output as integers 1 and 0 fixed Causes float values to be displayed in fixed decimal format scientific Displays float values in exponential notation internal Pads after sign or base indicator to fill specified field width left Causes output to be left-justified right Causes output to be right-justified (default) showbase Shows the base for octal (0) and hexadecimal (Ox) numbers noshowbase Does not show the base for hexadecimal and octal output showpoint Shows the decimal point and trailing zeros for float values noshowpoint Suppresses display of decimal point for float values with a zero fractional part Displays trailing zeros for float values with a non-zero fractional part showpos Adds leading + to positive numbers noshowpos Does not show + for positive numbers (default) skipws Skips leading whitespace on input (default) noskipws Does not skip leading whitespace on input unitbuf Flushes the output buffer after each insertion operation nounitbuf Does not flush output buffer after each insertion operation uppercase Shows hexadecimal numbers and exponent in uppercase nouppercase Displays hexadecimal numbers and exponents in lower case If your program includes the statement using namespace std; the preceding manipulators may be inserted directly into the output stream. Without the namespace statement, they can only be used with the setiosflags and resetiosflags manipulators below. See the sample program on p. 3 for examples of using them in a program. Manipulators Having One Parameter (defined in iomanip.h ) Manipulator Purpose


setprecision (int p) Sets the number of digits displayed after a decimal point for floats (affects output only if the fractional portion of the number is nonzero) setw (int w) Sets field width for next output value only setiosflags (long f) Sets format state flags specified in f resetiosflags (long f) Turn off (reset to default) the format state flags specified in f setbase (int base) Sets number base to 8, 10, or 16 (default is 10) setfill (int ch) Sets fill character (default is blank) The general-purpose manipulators setiosflags and resetiosflags have a parameter of a set of bit-flags. Each open stream maintains a series of bit-flags. Each flag records whether a particular attribute is or is not set. This set of flags records the stream's format state. In iostream.h, an enumerated type is defined with a set of enumeration constant names for each format state.

Input

The extraction operator >> is used for general input of values of multiple types. The extraction operator is defined for all the built-in basic C++ types. As with the insertion operator, it is possible to input values for multiple variables in the same statement by chaining them together with the extraction operator: cin >> value1 >> value2; is the same as cin >> value1; cin >> value2; To input a numeric value, leading whitespace is skipped and then characters are input until a character inappropriate for the type is encountered. The default input base is decimal (numbers without an explicit base are assumed to be decimal), but it is possible to input octal or hexadecimal values by explicitly entering the base: 024 would be read as an octal 24 (decimal 20) and 0x14 would be read as a hexadecimal 14 (decimal 20). Leading whitespace is also skipped when characters and strings are input. When a value is to be read for a char variable, the first non-whitespace character is input. When a value is to be read for a string variable, characters are read starting with the first non-whitespace character until whitespace (end-of-line, blank, tab, end-of-file) is encountered.

Additional Functions for Specialized I/O (defined in iostream.h)

istream & get (char & c); inputs the next character ( even if it is whitespace ), storing the input character in the char parameter. This form of the function returns 0 (false) if end of file is encountered before a character can be input. Example: cin.get(ch); int get (void); inputs the next character ( even if it is whitespace ), returning the character input (or returning EOF if end of file -- EOF is a predefined constant for the end-of-file symbol) Example: ch = cin.get(); or while ( ( ch = cin.get() ) != '\n') ... // read chars across a line until the end-of-line marker is found Examples of reading chars until the end-of-line marker (‘\n’) is found (assume the declaration: char ch): (a) (b) (c) cin >> ch; cin.get(ch); while (ch != '\n') while (ch != '\n') while ( ( ch = cin.get() ) != '\n') { { cout << ch; cout << ch; cout << ch; cin >> ch; cin.get(ch); } } Input for each program is the 7 characters Hi Mom! followed by the enter key ( \n symbol ). Output for each program: (a) b) (c) HiMom! Hi Mom! Hi Mom! (continues in an infinite loop) istream & ignore (int len = 1, int delim = EOF); skips over a designated number of characters (first parameter; default is 1) or terminates upon encountering a designated delimiter (second parameter; default is EOF, which causes ignore() to skip to the end of file when reading from a file). The delimiter is skipped. Example: cin.ignore(); or cin.ignore(2); or cin.ignore(80,'\n'); ostream & put (char c); outputs one character (the parameter supplied) Example: cout.put('\a'); (make computer beep) or cout.put('A'); ostream & put (int n); outputs the char equivalent of the parameter (assumed to be an ASCII number) Example: cout.put(7); (make computer beep) or cout.put(65); (display ‘A’ ) int peek (void); returns next character in the input stream, but does not remove the character from the stream (that character remains to be read). Example: ch = cin.peek(); or while ( ( ch = cin.peek() ) != ' ') ... or while (cin.peek() != '\n') int eof (void); returns true if end of file has been reached, or returns false otherwise Example: while (! cin.eof() ) ... (you’d have to enter the end-of-file symbol from the keyboard

-- for DOS it’s Ctrl Z, for Mac and UNIX/Linux it’s Ctrl D )