C++ cout 物件
示例
使用 cout
物件輸出不同資料型別
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";
定義和用法
The cout
object is used to output values/print text.
The cout
object is used to output values/print text.
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;
注意: cout
物件定義在 <iostream>
標頭檔案中。
運算子
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.
除了 setw()
,運算子的效果會一直保持,直到另一個運算子改變它。
The table below shows a list of useful manipulators
運算子 | 描述 | 示例 |
---|---|---|
boolalpha |
Displays boolean values as "true" and "false" instead of "1" and "0". | cout << boolalpha << false; |
dec |
將整數表示為十進位制數字。 | 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 |
用固定的小數位數表示浮點數。小數位數可以使用 setprecision() 運算子來確定。 |
cout << fixed << 19.99; |
hex |
將整數表示為十六進位制數字。 | cout << hex << 12; |
internal |
如果指定了寬度(使用 setw() 運算子),數字的符號將左對齊,而值將右對齊,其他資料型別的輸出將右對齊。 |
cout << setw(10) << internal << -12345; |
left |
如果指定了寬度(使用 setw() 運算子),則將輸出左對齊。 |
cout << setw(10) << left << "Hello"; |
noboolalpha |
用於重置由 boolalpha 運算子所做的更改。 |
cout << noboolalpha << false; |
noshowbase |
用於重置由 showbase 運算子所做的更改。 |
cout << hex << noshowbase << 12; |
noshowpoint |
用於重置由 showpoint 運算子所做的更改。 |
cout << noshowpoint << 12345.0; |
noshowpos |
用於重置由 showpos 運算子所做的更改。 |
cout << noshowpos << 12; |
nouppercase |
用於重置由 uppercase 運算子所做的更改。 |
cout << hex << nouppercase << 12; |
oct |
將整數表示為八進位制數字。 | cout << oct << 12; |
right |
如果指定了寬度(使用 setw() 運算子),則將輸出右對齊。 |
cout << setw(10) << right << "Hello"; |
fixed |
用科學記數法表示浮點數。小數位數可以使用 setprecision() 運算子來確定。 |
cout << fixed << 19.99; |
setfill() |
選擇一個字元用作填充。 需要 <iomanip> 庫。 |
cout << setfill('.') << setw(10) << 19.99; |
setprecision() |
選擇浮點數的精度。如果使用了 fixed 或 scientific 運算子,它指定小數位數,否則它指定有效數字的數量。需要 <iomanip> 庫。 |
cout << setprecision(4) << 12.3456; |
setw() |
指定下一個輸出的最小字元寬度。如果輸出不夠寬,則新增填充以填充剩餘空間。 需要 <iomanip> 庫。 |
cout << setw(10) << "Hello"; |
showbase |
將整數表示為十六進位制或八進位制時,在數字前加上 "0x" 或 "0" 以顯示其基數。 | 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 |
用大寫字母表示十六進位制數字和科學記數法中的 "e"。 | cout << hex << uppercase << 12; |
示例
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";
方法
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.
示例
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.
示例
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 | 語法 | 描述 |
---|---|---|
ios::boolalpha |
cout.setf(ios::boolalpha) |
Displays boolean values as "true" and "false" instead of "1" and "0". |
ios::showbase |
cout.setf(ios::showbase) |
將整數表示為十六進位制或八進位制時,在數字前加上 "0x" 或 "0" 以顯示其基數。 |
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) |
用大寫字母表示十六進位制數字和科學記數法中的 "e"。 |
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. |
示例
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";