
Pre-defined stream
Controls output to a stream buffer associated with the object stdout declared in <cstdio>.
None
#include <iostream> extern ostream cout; ostream cout;
The object cout controls output to a stream buffer associated with the object stdout declared in <cstdio>. By default the standard C and C++ streams are synchronized, but performance improvement can be achieved by using the ios_base member function synch_with_stdio to desynchronize them.
After the object cin is initialized, cin.tie() returns &cout, which implies that cin and cout are synchronized.
The formatting is done through member functions or manipulators.
| Manipulators | Member functions |
|---|---|
|
showpos |
setf(ios_base::showpos) |
|
noshowpos |
unsetf(ios_base::showpos) |
|
showbase |
setf(ios_base::showbase) |
|
noshowbase |
unsetf(ios_base::showbase) |
|
uppercase |
setf(ios_base::uppercase) |
|
nouppercase |
unsetf(ios_base::uppercase) |
|
showpoint |
setf(ios_base::showpoint) |
|
noshowpoint |
unsetf(ios_base::showpoint) |
|
boolalpha |
setf(ios_base::boolalpha) |
|
noboolalpha |
unsetf(ios_base::boolalpha) |
|
unitbuf |
setf(ios_base::unitbuf) |
|
nounitbuf |
unsetf(ios_base::unitbuf) |
|
internal |
setf(ios_base::internal, ios_base::adjustfield) |
|
left |
setf(ios_base::left, ios_base::adjustfield) |
|
right |
setf(ios_base::right, ios_base::adjustfield) |
|
dec |
setf(ios_base::dec, ios_base::basefield) |
|
hex |
setf(ios_base::hex, ios_base::basefield) |
|
oct |
setf(ios_base::oct, ios_base::basefield) |
|
fixed |
setf(ios_base::fixed, ios_base::floatfield) |
|
scientific |
setf(ios_base::scientific, ios_base::floatfield) |
|
resetiosflags (ios_base::fmtflags flag) |
setf(0,flag) |
|
setiosflags (ios_base::fmtflags flag) |
setf(flag) |
|
setbase(int base) |
see above |
|
setfill(char_type c) |
fill(c) |
|
setprecision(int n) |
precision(n) |
|
setw(int n) |
width(n) |
|
endl |
|
|
ends |
|
|
flush |
flush( ) |
| showpos | Generates a + sign in non-negative generated numeric output. |
| showbase | Generates a prefix indicating the numeric base of generated integer output |
| uppercase | Replaces certain lowercase letters with their uppercase equivalents in generated output |
| showpoint | Generates a decimal-point character unconditionally in generated floating-point output |
| boolalpha | Inserts and extracts bool type in alphabetic format |
| unitbuf | Flushes output after each output operation |
| internal | Adds fill characters at a designated internal point in certain generated output. If no such point is designated, it's identical to right. |
| left | Adds fill characters on the right (final positions) of certain generated output |
| right | Adds fill characters on the left (initial positions) of certain generated output |
| dec | Converts integer input or generates integer output in decimal base |
| hex | Converts integer input or generates integer output in hexadecimal base |
| oct | Converts integer input or generates integer output in octal base |
| fixed | Generates floating-point output in fixed-point notation |
| scientific | Generates floating-point output in scientific notation |
| resetiosflags | |
| (ios_base::fmtflags flag) | Resets the fmtflags field flag |
| setiosflags | |
| (ios_base::fmtflags flag) | Sets up the flag flag |
| setbase(int base) | Converts integer input or generates integer output in base base. The parameter base can be 8, 10 or 16. |
| setfill(char_type c) | Sets the character used to pad (fill) an output conversion to the specified field width |
| setprecision(int n) | Sets the precision (number of digits after the decimal point) to generate on certain output conversions |
| setw(int n) | Sets the field with (number of characters) to generate on certain output conversions |
| endl | Inserts a newline character into the output sequence and flush the output buffer. |
| ends | Inserts a null character into the output sequence. |
| flush | Flush the output buffer. |
precision() 6 width() 0 fill() the space character flags() skipws | dec getloc() locale::locale()
//
// cout example #1
//
#include<iostream>
#include<iomanip>
void main ( )
{
using namespace std;
int i;
float f;
// read an integer and a float from stdin
cin >> i >> f;
// output the integer and goes at the line
cout << i << endl;
// output the float and goes at the line
cout << f << endl;
// output i in hexa
cout << hex << i << endl;
// output i in octal and then in decimal
cout << oct << i << dec << i << endl;
// output i preceded by its sign
cout << showpos << i << endl;
// output i in hexa
cout << setbase(16) << i << endl;
// output i in dec and pad to the left with character
// @ until a width of 20
// if you input 45 it outputs 45@@@@@@@@@@@@@@@@@@
cout << setfill('@') << setw(20) << left << dec << i;
cout << endl;
// output the same result as the code just above
// but uses member functions rather than manipulators
cout.fill('@');
cout.width(20);
cout.setf(ios_base::left, ios_base::adjustfield);
cout.setf(ios_base::dec, ios_base::basefield);
cout << i << endl;
// outputs f in scientific notation with
// a precision of 10 digits
cout << scientific << setprecision(10) << f << endl;
// change the precision to 6 digits
// equivalents to cout << setprecision(6);
cout.precision(6);
// output f and goes back to fixed notation
cout << f << fixed << endl;
}
//
// cout example #2
//
#include <iostream>
void main ( )
{
using namespace std;
char p[50];
cin.getline(p,50);
cout << p;
}
//
// cout example #3
//
#include <iostream>
#include <fstream>
void main ( )
{
using namespace std;
// open the file "file_name.txt"
// for reading
ifstream in("file_name.txt");
// output the all file to stdout
if ( in )
cout << in.rdbuf();
else
{
cout << "Error while opening the file";
cout << endl;
}
}
Keep in mind that the manipulator endl flushes the stream buffer. Therefore it is recommended to use `\n' if your only intent is to go at the line. It greatly improves performance when C and C++ streams are not synchronized.
If your compiler does not support namespaces, then you do not need the using declaration for std.
basic_ostream(3C++), iostream(3C++), basic_filebuf(3C++), cin(3C++), cerr(3C++), clog(3C++), wcin(3C++), wcout(3C++), wcerr(3C++), wclog(3C++), iomanip(3C++)
Working Paper for Draft Proposed International Standard for Information Systems--Programming Language C++, Section 27.3.1
ANSI X3J16/ISO WG21 Joint C++ Committee