C++ cout object
Example
Use the cout
object to output different data types:
string myStr = "Hello World!";
bool myBool = false;
int myInt = 50;
float myFloat = 19.99;
cout << myStr << "\n";
cout << myBool << "\n";
cout << myInt << "\n";
cout << myFloat << "\n";
Definition and Usage
The cout
object is used to output values/print text.
The most common way to use cout
is with the <<
insertion operator. The insertion operator decides how to represent a variable or literal value based on its data type.
cout << "Hello World!";
The insertion operator can be used more than once on the same line to output multiple values:
cout << "The answer is: " << x;
Note: The cout
object is defined in the <iostream>
header file.
Manipulators
Manipulators allow you to change the formatting of the output. They are used with the <<
insertion operator in the same way as literal values and variables, and they affect output that follows them.
Except for setw()
, the effect of a manipulator remains until another another manipulator changes it.
The table below shows a list of useful manipulators:
Manipulator | Description | Example |
---|---|---|
boolalpha |
Displays boolean values as "true" and "false" instead of "1" and "0". | cout << boolalpha << false; |
dec |
Represents integers as decimal digits. | cout << dec << 12; |
endl |
Outputs a newline character. This manipulator also flushes the output buffer which makes it less efficient than printing \n . |
cout << "Line 1" << endl << "Line 2"; |
ends |
Outputs the null terminating character used to end C-style strings. Mainly used when writing into files. | cout << "Hello World!" << ends; |
fixed |
Represents floating point numbers with a fixed number of decimal places. The number of decimal places can be established with the setprecision() manipulator. |
cout << fixed << 19.99; |
hex |
Represents integers as hexadecimal digits. | cout << hex << 12; |
internal |
If a width is specified (using the setw() manipulator), numbers will have their sign left-aligned while the value is right-aligned, other data types will have the output aligned to the right. |
cout << setw(10) << internal << -12345; |
left |
If a width is specified (using the setw() manipulator), aligns output to the left. |
cout << setw(10) << left << "Hello"; |
noboolalpha |
Used to reset the change made by the boolalpha manipulator. |
cout << noboolalpha << false; |
noshowbase |
Used to reset the change made by the showbase manipulator. |
cout << hex << noshowbase << 12; |
noshowpoint |
Used to reset the change made by the showpoint manipulator. |
cout << noshowpoint << 12345.0; |
noshowpos |
Used to reset the change made by the showpos manipulator. |
cout << noshowpos << 12; |
nouppercase |
Used to reset the change made by the uppercase manipulator. |
cout << hex << nouppercase << 12; |
oct |
Represents integers as octal digits. | cout << oct << 12; |
right |
If a width is specified (using the setw() manipulator), aligns output to the right. |
cout << setw(10) << right << "Hello"; |
fixed |
Represents floating point numbers in scientific notation. The number of decimal places can be established with the setprecision() manipulator. |
cout << fixed << 19.99; |
setfill() |
Chooses a character to use as padding. Requires the <iomanip> library. |
cout << setfill('.') << setw(10) << 19.99; |
setprecision() |
Chooses the precision of floating point numbers. If the fixed or scientific manipulators were used it specifies the number of decimal places, otherwise it specifies the number of significant digits. Requires the <iomanip> library. |
cout << setprecision(4) << 12.3456; |
setw() |
Specifies the minimum number of characters wide the next output should be. If the output is not wide enough then padding is added to fill up the remaining space. Requires the <iomanip> library. |
cout << setw(10) << "Hello"; |
showbase |
When representing integers as hexadecimal or octal, prefixes the numbers with "0x" or "0" to show their base. | cout << hex << showbase << 12; |
showpoint |
Always displays the decimal point for floating point numbers even if it is not needed. | cout << showpoint << 12345.0; |
showpos |
Always displays a + sign next to positive numbers. | cout << showpos << 12; |
uppercase |
Represents hexadecimal digits and the scientific notation "e" in uppercase. | cout << hex << uppercase << 12; |
Example
Use manipulators to change how output is formatted:
// Booleans
cout << "Booleans\n";
cout << false << "\n";
cout << boolalpha << false << "\n";
// Hexadecimal and octal numbers
cout << "\nHexadecimal and octal numbers\n";
int myInt = 14;
cout << dec << myInt << "\n";
cout << hex << myInt << "\n";
cout << oct << myInt << "\n";
cout << showbase << uppercase;
cout << hex << myInt << "\n";
cout << oct << myInt << "\n";
cout << dec;
// Floating point numbers
cout << "\nFloating point numbers\n";
float myFloat = 19.99;
cout << myFloat << "\n";
cout << showpos << showpoint << 12345.0 << "\n";
cout << noshowpos << noshowpoint;
cout << fixed << myFloat << "\n";
cout << scientific << myFloat << "\n";
// Alignment
cout << "\nAlignment\n";
cout << setw(10) << left << "Left" << "\n";
cout << setw(10) << right << "Right" << "\n";
cout << setw(10) << internal << -12345 << " (Internal)\n";
Methods
The cout
object also has methods which can do the same operations as the <<
insertion operator.
Output methods
The cout.write(str, n)
method outputs the first n characters from the char
array str without any formatting.
The cout.put(c)
method outputs the specified character c
without any formatting.
Formatting methods
The cout.precision(p)
method specifies how many digits are used to represent floating point numbers. By default it specifies the number of significant digits to display. If the ios::fixed
or ios::scientific
flag is enabled then it specifies how many digits follow the decimal point.
The cout.width(w)
method specifies the minimum number of characters wide the next output should occupy. If the output does not have enough characters then padding characters will be added to fill up the remaining space. By default the padding characters are spaces and they are added to the left so that the content is aligned to the right. The alignment can be changed by using one of the ios::adjustfield
flags described in the Flags section below.
Example
cout.width(10);
cout << 5 << "\n";
cout.width(10);
cout << 25 << "\n";
cout.width(10);
cout << 125 << "\n";
The cout.fill(c)
method specifies which character will be used as padding.
Example
cout.fill('.');
cout.width(10);
cout << 5 << "\n";
cout.width(10);
cout << 25 << "\n";
cout.width(10);
cout << 125 << "\n";
Flags
The setf()
and unsetf()
methods are used to set or unset flags which change the formatting of the output. There are a variety of different flags. Some flags belong to a group and, in that case, the setf()
method should have a second parameter specifying which group it belongs to so that the other flags of the group can be reset.
Flag | Syntax | Description |
---|---|---|
ios::boolalpha |
cout.setf(ios::boolalpha) |
Displays boolean values as "true" and "false" instead of "1" and "0". |
ios::showbase |
cout.setf(ios::showbase) |
When representing integers as hexadecimal or octal, prefixes the numbers with "0x" or "0" to show their base. |
ios::showpoint |
cout.setf(ios::showpoint) |
Always displays the decimal point for floating point numbers even if it is not needed. |
ios::showpos |
cout.setf(ios::showpoint) |
Always displays a + sign next to positive numbers. |
ios::uppercase |
cout.setf(ios::uppercase) |
Represents hexadecimal digits and the scientific notation "e" in uppercase. |
ios::dec |
cout.setf(ios::dec, ios::basefield) |
Represents integers as decimal digits. Belongs to the ios::basefield group. |
ios::hex |
cout.setf(ios::hex, ios::basefield) |
Represents integers as hexadecimal digits. Belongs to the ios::basefield group. |
ios::oct |
cout.setf(ios::oct, ios::basefield) |
Represents integers as octal digits. Belongs to the ios::basefield group. |
ios::fixed |
cout.setf(ios::fixed, ios::floatfield) |
Represents floating point numbers with a fixed number of decimal places. The number of decimal places can be established with the cout.precision() method. Belongs to the ios::floatfield group. |
ios::scientific |
cout.setf(ios::scientific, ios::floatfield) |
Represents floating point numbers in scientific notation. The number of decimal places can be established with the cout.precision() method. Belongs to the ios::floatfield group. |
ios::internal |
cout.setf(ios::internal, ios::adjustfield) |
If a width is specified, for numbers the sign is left-aligned while the value is right-aligned, for other data types the output is aligned to the right. Belongs to the ios::adjustfield group. |
ios::left |
cout.setf(ios::left, ios::adjustfield) |
Aligns output to the left when a width is specified. Belongs to the ios::adjustfield group. |
ios::right |
cout.setf(ios::right, ios::adjustfield) |
Aligns output to the right when a width is specified. Belongs to the ios::adjustfield group. |
Example
Use flags to change how output is formatted:
// Booleans
cout << "Booleans\n";
cout << false << "\n";
cout.setf(ios::boolalpha);
cout << false << "\n";
// Hexadecimal and octal numbers
cout << "\nHexadecimal and octal numbers\n";
int myInt = 14;
cout << myInt << "\n";
cout.setf(ios::hex, ios::basefield);
cout << myInt << "\n";
cout.setf(ios::oct, ios::basefield);
cout << myInt << "\n";
cout.setf(ios::showbase);
cout.setf(ios::uppercase);
cout.setf(ios::hex, ios::basefield);
cout << myInt << "\n";
cout.setf(ios::oct, ios::basefield);
cout << myInt << "\n";
cout.setf(ios::dec, ios::basefield);
// Floating point numbers
cout << "\nFloating point numbers\n";
float myFloat = 19.99;
cout << myFloat << "\n";
cout.setf(ios::fixed, ios::floatfield);
cout << myFloat << "\n";
cout.setf(ios::scientific, ios::floatfield);
cout << myFloat << "\n";
cout.unsetf(ios::floatfield);
cout.setf(ios::showpos);
cout.setf(ios::showpoint);
cout << 12345.0 << "\n";
// Alignment
cout << "\nAlignment\n";
cout.setf(ios::left, ios::adjustfield);
cout << setw(10) << "Left" << "\n";
cout.setf(ios::right, ios::adjustfield);
cout << setw(10) << "Right" << "\n";
cout.setf(ios::internal, ios::adjustfield);
cout << setw(10) << 12345.0 << " (Internal)\n";