C++ 流控制函数setw()、setfill()、setbase()、setprecision()的使用
头文件:
#include <iostream>
#include <iomanip>
功能:
std::setw :需要填充多少个字符,默认填充的字符为' '空格
std::setfill:设置std::setw将填充什么样的字符,如:std::setfill('*')
std::setbase(n):将输出数据转换为n进制
std::setprecision():控制输出流显示浮点数的数字个数,C++默认的流输出数值有效位是6。
#include <iostream>
#include <iomanip>
#include <sstream>
#include <shlobj.h> //AppData
std::wstring GetUserAppDataDir()
{
std::wstring appdata;
wchar_t buffer[MAX_PATH];
::ZeroMemory(buffer, MAX_PATH*sizeof(wchar_t));
if (::SHGetSpecialFolderPath(NULL, buffer, CSIDL_APPDATA, NULL))
appdata = buffer; if (appdata.substr(appdata.length() - ) != L"\\")
{
appdata.append(L"\\");
}
return appdata;
} //生成日志文件路径
std::wstring GetLogFileName()
{
SYSTEMTIME sysTime;
::GetLocalTime( &sysTime ); std::wstringstream logFileName;
logFileName << GetUserAppDataDir().c_str() << L"_"
<< sysTime.wYear << L"_"
<< std::setw( ) << std::setfill( L'' ) << sysTime.wMonth << L"_"
<< std::setw( ) << std::setfill( L'' ) << sysTime.wDay << L"_"
<< std::setw( ) << std::setfill( L'' ) << sysTime.wHour << L"_"
<< std::setw( ) << std::setfill( L'' ) << sysTime.wMinute << L"_"
<< std::setw( ) << std::setfill( L'' ) << sysTime.wSecond << L".log";
return logFileName.str();
}
//字符串转数字
template <class T> T to_num( const char* s )
{
T tmp();
std::istringstream is(s);
is >> std::setbase() >> tmp;//setbase(n):将输出数据转换为n进制
if(is.fail())
{
return ;
}
return tmp;
};
//测试代码
int main()
{
int a = ;
int b = ;
char c = '$';
//输出: 1
std::cout << std::setw( ) << a << std::endl;
//输出:$$$1
std::cout << std::setw( ) << std::setfill( c ) << a << std::endl;
//输出:$$$12
std::cout << std::setw( ) << std::setfill( c ) << a << b << std::endl;
//输出日志文件路径
std::wcout << GetLogFileName().c_str() << std::endl;
std::cout << "\n" << std::endl;
//std::setbase()的使用
int num = to_num<int>("");
long ldata = to_num<long>("");
std::cout << num << std::endl;
std::cout << ldata << std::endl;
std::cout << "\n" << std::endl;
std::cout << "255(2进制): " << std::setbase() << << std::endl;//二进制输出
std::cout << "255(8进制): " << std::setbase() << << std::endl;//八进制输出
std::cout << "255(16进制): " << std::setbase() << << std::endl;//十六进制输出
//setprecision()的作用: 控制输出流显示浮点数的数字个数(C++默认的流输出数值有效位是6)
//如果与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。
//setiosflags(ios::fixed)是用定点方式表示实数。
//setiosflags(ios::scientific)是用指数方式表示实数。
std::cout << std::setiosflags(std::ios::fixed) << std::setprecision() << 12.123456 << std::endl;
//如果与setiosflags(ios::scientific)合用,可以控制指数表示法的小数位数。
//在用浮点表示的输出中,setprecision(n)表示有效位数。
//在用定点表示的输出中,setprecision(n)表示小数位数。
system("pause");
return ;
}
C++ 流控制函数setw()、setfill()、setbase()、setprecision()的使用的更多相关文章
- setprecision(int n)等格式函数用法 分类: POJ 2015-06-11 10:56 17人阅读 评论(0) 收藏
**这些用法前最好用 #include <iostream> //不要用iostream.h ,会出现好多问题 #include <iomanip> // io 流控制头 ...
- c++ 作业 10月13日 进制转换最简单方法,控制c++输出格式方法 教材50的表格自己实践一下 例题3.1 setfill() setw()
#include <iostream> #include <iomanip> using namespace std; int main(){ // int i; // cou ...
- setw()函数
- iomanip,setw(),setw: undeclared identifier
今天使用setw(),提示setw: undeclared identifier,上网查了下,原来是没有包含头文件iomanip,现摘录如下: iomanip #include <iomanip ...
- 从零开始学C++之IO流类库(四):输出流格式化(以操纵子方式格式化 以ios类成员函数方式格式化)
一.以操纵子方式格式化 数据输入输出的格式控制使用系统头文件<iomanip>中提供的操纵符.把它们作为插入操作符<<的输出对象即可.如setiosflags.setw.set ...
- 输出流格式化(以操纵子方式格式化,以ios类成员函数方式格式化)
一.以操纵子方式格式化 数据输入输出的格式控制使用系统头文件<iomanip>中提供的操纵符.把它们作为插入操作符<<的输出对象即可.如setiosflags.setw.set ...
- 文件重定向,getline()获取一样,屏幕输出流,格式控制符dec,oct,hex,精度控制setprecision(int num),设置填充,cout.width和file(字符),进制输入
1.在window下的命令重定向输出到文件里 2.将内容输入到某个文件里的方式:命令<1.txt (使用1.txt中的命令) 3.读取文件里的名,然后将命令读取最后输出到文件里.命令< ...
- C++第五章函数
书上的点: 这次直接写写画画了,遇到的bug也就直接敲了,忘记记录了,好在都在书上,所以勾画一下,提一下.发现每一章后面的小结,都蛮有意思的.可以抄一遍. 1.返回值的函数成为返回值函数(value- ...
- STL容器
啦啦啦,今天听啦高年级学长讲的STL容器啦,发现有好多东西还是有必要记载的,毕竟学长是身经百战的,他在参加各种比赛的时候积累的经验可不是一天两天就能学来的,那个可是炒鸡有价值的啊,啊啊啊啊啊 #inc ...
随机推荐
- configparser模块读写ini配置文件
在自动化测试过程中,为了提高脚本的可读性和降低维护成本,将一些通用信息写入配置文件,将重复使用的方法写成公共模块进行封装,使用时候直接调用即可. 这篇博客,介绍下python中利用configpars ...
- Redis实现高并发下的抢购、秒杀功能
博主最近在项目中遇到了抢购问题!现在分享下.抢购.秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个:1 高并发对数据库产生的压力2 竞争状态下如何解决库存的正确减少("超卖" ...
- js基础巩固练习
---恢复内容开始--- 今天讲了js的基础知识 js的组成3部分1 ECMAscript 核心 2 DOM 文本对象模型 3BOM 浏览器模型 js 的引入方式三种 1 在body里作为标 ...
- gulp-usemin 插件使用
关于什么是gulp,它和grunt有什么区别等问题,这里不做任何介绍.本文主要介绍如何使用gulp-usemin这款插件,同时也会简单介绍本文中用到的一些插件. 什么是gulp-usemin 用来将H ...
- SQL存储原理及聚集索引、非聚集索引、唯一索引、主键约束的关系(补)
索引类型 1. 唯一索引:唯一索引不允许两行具有相同的索引值 2. 主键索引:为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型.主键索引要求主键中的 ...
- Android-ListView-CursorAdapter
在上篇博客,Android-ListView-SimpleCursorAdapter,中介绍了SimpleCurosrAdapter的使用操作(SimpleCursorAdapter是简单便捷Curs ...
- 在JS中,将text框中数据格式化,根据不同的小数位数,格式化成对应的XXX,XXX,XXX.XX(2位小数) 或者XXX,XXX,XXX(0位小数)
//在JS中,将text框中数据格式化,根据不同的小数位数,格式化成对应的XXX,XXX,XXX.XX(2位小数) 或者XXX,XXX,XXX(0位小数) function formatNum(num ...
- vs附加调试
已解决.项目-属性-调试-启用调试器选择启用本机代码调试,不知道怎么的选成启用Visual Studio承载进程了.
- IIS7 配置ssl证书 多域名绑定443端口
IIS7下多个子域名同时配置https协议,但IIS7默认支持单个443端口造成端口冲突: 解决方案:先把每个域名配置不同的端口 例:444,445,446等 然后在:C:\Windows\syste ...
- oracle-01427
Oracle / PLSQL: ORA-01427 Learn the cause and how to resolve the ORA-01427 error message in Oracle. ...