std::cout.setf ( std::ios::showbase ); // activate showbase
std::cout << 100 << '\n';
std::cout.unsetf ( std::ios::showbase ); // deactivate showbase
std::cout << 100 << '\n';
return 0;
}
// modifying flags with setf/unsetf
#include
int main () {
std::cout.setf ( std::ios::hex, std::ios::basefield ); // set hex as the basefield
std::cout.setf ( std::ios::showbase ); // activate showbase
std::cout << 100 << '\n';
std::cout.unsetf ( std::ios::showbase ); // deactivate showbase
std::cout << 100 << '\n';
return 0;
}输出:
0x64
64
4. 读取/设置显示浮点数时的精度
[cpp]
streamsize precision() const;
streamsize precision (streamsize prec);
streamsize precision() const;
streamsize precision (streamsize prec); 例子:
[cpp]
// modify precision
#include
int main () {
double f = 3.14159;
std::cout.unsetf ( std::ios::floatfield ); // floatfield not set
std::cout.precision(5);
std::cout << f << '\n';
std::cout.precision(10);
std::cout << f << '\n';
std::cout.setf( std::ios::fixed, std:: ios::floatfield ); // floatfield set to fixed
std::cout << f << '\n';
return 0;
}
// modify precision
#include
int main () {
double f = 3.14159;
std::cout.unsetf ( std::ios::floatfield ); // floatfield not set
std::cout.precision(5);
std::cout << f << '\n';
std::cout.precision(10);
std::cout << f << '\n';
std::cout.setf( std::ios::fixed, std:: ios::floatfield ); // floatfield set to fixed
std::cout << f << '\n';
return 0;
}输出:
3.1416
3.14159
3.1415900000
5. 读取/设定流的输出数据的显示宽度
[cpp]
streamsize width() const;
streamsize width (streamsize wide);
streamsize width() const;
streamsize width (streamsize wide); 例子:
[cpp]
// field width
#include
int main () {
std::cout << 100 << '\n';
std::cout.width(10);
std::cout << 100 << '\n';
std::cout.fill('x');
std::cout.width(15);
std::cout << std::left << 100 << '\n';
return 0;
}
// field width
#include
int main () {
std::cout << 100 << '\n';
std::cout.width(10);
std::cout << 100 << '\n';
std::cout.fill('x');
std::cout.width(15);
std::cout << std::left << 100 << '\n';
return 0;
}输出:
100
100
100xxxxxxxxxxxx
语言环境:
1. 给流设置本地语言环境
[cpp]
locale imbue (const locale& loc);
locale imbue (const locale& loc); 例子:
[cpp]
// imbue example
#include
#include
int main()
{
std::locale mylocale(""); // get global locale
std::cout.imbue(mylocale); // imbue global locale
std::cout << 3.14159 << '\n';
return 0;
}
// imbue example
#include
#include
int main()
{
std::locale mylocale(""); // get global locale
std::cout.imbue(mylocale); // imbue global locale
std::cout << 3.14159 << '\n';
return 0;
}输出:
3,14159
2. 获取当前使用语言环境
[cpp] locale getloc() const;
locale getloc() const;
1.2 basic_ios
basic_ios定义出“与字符类型及其相应字符特性相关”的stream class的共同属性,其中包括清除流状态、设置流状态、拷贝流标志、返回或设置流缓冲区指针、设置本地化相关信息、返回或设置填充字符、字符转换,还包括了stream所用的缓冲器.
basic_ios在其内部定义了一个指向streambuf的指针。
[cpp] template
class basic_ios
: public ios_base
{
//C++标准库封装了一个缓冲区类streambuf,以供输入输出流对象使用。
//每个标准C++输出输出流对象都包含一个指向streambuf的指针,
basic_streambuf<_Elem, _Traits>*_Mystrbuf;
// ....
}
template
class basic_ios
: public ios_base
{
//C++标准库封装了一个缓冲区