計算機概論實習計算機概論實習2007-03-162007-03-16
2
Integral Stream Base expression: dec, oct, hIntegral Stream Base expression: dec, oct, hex, setbase, and showbaseex, setbase, and showbase
Use header <iomanip> Integers normally base 10 (decimal) Stream manipulators to change base
dec (resets to base 10)
cout << dec << 1000 1000 hex (base 16)
cout << hex << 1000; 3e8 oct (base 8)
cout << oct << 1000; 1750
3
Integral Stream Base expression: dec, oct, hIntegral Stream Base expression: dec, oct, hex, setbase, and showbaseex, setbase, and showbase
setbase(newBase) One of 8, 10, or 16
cout << setbase(dec) << 1000;
Base remains same until explicitly changed showbase
Forces base of number to be shown Decimal numbers default 1000 Preceding 0x or 0X for hex 0x3e8 Preceding 0 for octal 01750
Remove with noshowbase
4
Floating-Point Precision (precision, setpreciFloating-Point Precision (precision, setprecision)sion)
Set precision of floating point numbers Number of digits to right of decimal setprecision stream manipulator
Pass number of decimal points cout << setprecision(5)
precision member function cout.precision(newPrecision) With no arguments, returns current precision
Settings remain until changed explicitly
5
precisionprecision example example
int main(){
double root2 = sqrt( 2.0 ); //sqrt(2.0) = 1.414213562…..
for (int i = 0; i <= 11 ; i++){
cout.precision( i );
cout << root2 << endl;
}
return 0;
}
1.4142111.41.411.4141.41421.414211.4142141.41421361.414213561.4142135621.4142135624
6
Field Width (width, setw)Field Width (width, setw)
width member function (base class ios_base) Sets field width
Number of character positions for output Can also use setw stream manipulator
7
width, setwwidth, setw example example
int main(){const int SIZE= 80;char buffer[SIZE];cout << "Enter a sentence:" << endl;cin.get(buffer, SIZE);cout << "set width 5" << endl;cout.width(5);cout << buffer << endl;cout << "set width 6\n" << setw(6) << buffer << endl;return 0;
}
8
Trailing Zeros and Decimal Points (shoTrailing Zeros and Decimal Points (showpoint)wpoint)
showpoint Forces decimal number to print with trailing zeros For decimal number 79.0
79 without showpoint 79.000000 with showpoint (up to level of precision)
Reset with noshowpoint
9
showpointshowpoint example example
int main(){
cout << showpoint
<< "After using showpoint" << endl
<< "9.9900 prints as: " << 9.9900 << endl
<< "9.9000 prints as: " << 9.9000 << endl
<< "9.0000 prints as: " << 9.0000 << endl
<< "9 prints as: " << 9 << endl;
return 0;
} After using showpoint9.9900 prints as: 9.990009.9000 prints as: 9.900009.0000 prints as: 9.000009 prints as: 9
10
Justification (left, right and internal)Justification (left, right and internal)
left stream manipulator Left-justified, padding to right
right stream manipulator Right-justified, padding to left
internal Number's sign left-justified Number's value right-justified
+ 123 showpos forces sign to print
Remove with noshowpos
11
left, right and internalleft, right and internal example example
int x = 12345;cout << showpos;cout << "Default is right justified:" << endl
<< setw( 10 ) << x;cout << "\n\nUse std::left to left justify x:\n"
<< left << setw( 10 ) << x;cout << "\n\nUse std::right to right justify x:\n"
<< right << setw( 10 ) << x << endl;cout << "\n\nUse std::internal to internal justify x:\n"
<< internal << setw(10) << x << endl;
12
left, right and internalleft, right and internal example example
Default is right justified: +12345
Use std::left to left justify x:+12345
Use std::right to right justify x: +12345
Use std::internal to internal justify x:+ 12345
13
Padding (fill, setfill)Padding (fill, setfill)
Set fill character used in padding fill member function
cout.fill('*')cout.fill( '*' );
cout << setw( 10 ) << dec << x << endl;
*****10000 setfill stream manipulator
setfill( '*' )cout << setfill( '*' ) << setw( 10 ) << dec << x << endl;
14
Floating-Point Numbers; scientific and Floating-Point Numbers; scientific and fixed)fixed)
Stream manipulator scientific Forces scientific notation
1.946000e+009
Stream manipulator fixed Forces fixed point format Prints number of decimals specified by precision
1946000000.000000
15
Scientific and fixedScientific and fixed example example
double x = 0.001234567;
double y = 1.946e9;
cout << "Displayed in default format:" << endl
<< x << '\t' << y << endl;
cout << "\nDisplayed in scientific format:" << endl
<< scientific << x << '\t' << y << endl;
cout << "\nDisplayed in fixed format:" << endl
<< fixed << x << '\t' << y << endl;
16
Uppercase/Lowercase Control Uppercase/Lowercase Control (uppercase)(uppercase)
Stream manipulator uppercase Uppercase E in scientific notation
1E10 Uppercase X in hex notation and uppercase hex letters
0XABCD By default, lowercase Reset with nouppercase
17
Specifying Boolean Format (boolalpha)Specifying Boolean Format (boolalpha)
Data type bool Values true or false Outputs 0 (false) or 1 (true) when used with <<
Displayed as integers
Stream manipulator boolalpha Display strings "true" and "false" Reset with noboolalphabool boolvalue = true;
cout << “The result is " << boolalpha << boolvalue; The result is true
18
Setting and Resetting the Format State Setting and Resetting the Format State via Member-Function flagsvia Member-Function flags
Can save/restore format states After apply many changes, may want to restore original
Member function flags cout.flags() With no argument
Returns current state as fmtflags object Namespace ios_base
Represents format state cout.flags(0) : reset format With fmtflags argument
Sets state Returns previous state
19
ExampleExample
int main() {
int integerValue = 1000;
double doubleValue = 0.0947628;
cout << "The value of the flags variable is: " << cout.flags()
<< "\nPrint int and double in original format:\n"
<< integerValue << '\t' << doubleValue << endl << endl;
ios_base::fmtflags originalFormat = cout.flags();
cout << showbase << oct << scientific; // change format
20
ExampleExample
cout << "The value of the flags variable is: " << cout.flags()
<< "\nPrint int and double in a new format:\n"
<< integerValue << '\t' << doubleValue << endl << endl;
cout.flags( originalFormat ); // restore format
cout << "The restored value of the flags variable is: "
<< cout.flags()
<< "\nPrint values in original format again:\n"
<< integerValue << '\t' << doubleValue << endl;
return 0;
}
21
The value of the flags variable is: 513Print int and double in original format:1000 0.0947628
The value of the flags variable is: 012011Print int and double in a new format:01750 9.476280e-002 The restored value of the flags variable is: 513Print values in original format again:1000 0.0947628
22
Practice 2 (P2)Practice 2 (P2)
Please write a program which input interface is as follows:
and the output interface is like below:
請輸入學生的三個成績>: 80,90,90
國文 英文 數學 平均 80 90 90 86.67
10 字元寛 10 字元寛 10 字元寛