本文主要是介绍C++用控制器函数实现格式化I/O范例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
代码:
#include <iostream>
#include <iomanip> //包含控制器函数的库
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
//输出控制器
std::ostream &myform(std::ostream &out){
out.precision(4); // 一个浮点数打印4位数字
out.setf(std::ios::right); //右对齐
out<<std::setw(20)<<std::setfill('*'); //域宽20,填充符为“*”
return out;
}
//输入控制器
std::istream &myprompt(std::istream &in){
in>>std::dec; //格式为十进制数据
std::cout << "输入一个浮点数:" << std::endl;
return in;
}
int main(int argc, char** argv) {
//设置精度
std::cout << std::setprecision(4) << 1.23456 << std::endl;
//设置数据宽度
std::cout << std::setw(20) << "12345 678" << std::endl;
//指数形式
std::cout << setiosflags(std::ios::scientific);
std::cout << 1.23456 << std::endl;
//输出十六进制数
std::cout.setf(std::ios::showbase);
std::cout << std::hex << 256 << std::endl;
std::cout << "====================" << std::endl;
std::cout.unsetf(std::cout.flags()); //清楚格式指定标志
float f = 1.3456789;
std::cout << f << std::endl;
std::cout << myform << f << std::endl;
std::cout << "12345678901234567890" << std::endl;
std::cout << "====================" << std::endl;
std::cout.unsetf(std::cout.flags()); //清楚格式指定标志
std::cin >> myprompt >> f;
std::cout << f << std::endl;
std::cout << myform << f << std::endl;
return 0;
}
输出:
1.235
12345 678
1.2346e+000
0x100
====================
1.346
***************1.346
12345678901234567890
====================
输入一个浮点数:
12.345
12.35
***************12.35
--------------------------------
Process exited with return value 0
Press any key to continue . . .
12345 678
1.2346e+000
0x100
====================
1.346
***************1.346
12345678901234567890
====================
输入一个浮点数:
12.345
12.35
***************12.35
--------------------------------
Process exited with return value 0
Press any key to continue . . .
这篇关于C++用控制器函数实现格式化I/O范例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!