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 ...
随机推荐
- 福大软工 · BETA 版冲刺前准备(团队) [已完成]
写在前面 本次作业地址 林燊大哥 过去存在的问题 算法组 没有考虑到数据集不充足的情况.一开始我们将所有数据集按照8:1:1进行分割,分别分配给训练集.开发集和测试集.然鹅后来发现采集到的数据不够充足 ...
- [GO]等待时间的使用
package main import ( "time" "fmt" ) func main() { <-time.After(*time.Second) ...
- javascript总结23:javascript 数据类型与变量
1 基本类型和引用类型 JavaScript中的数据类型分为两类:基本类型和引用类型 基本类型:直接存储值,画图解释 Number.String.Boolean Undefined.Null 引用类 ...
- Android 内存优化[转]
一. Android的内存机制 Android的程序由Java语言编写,所以Android的内存管理与Java的内存管理相似.程序员通过new为对象分配内存,所有对象在java堆内分配空间:然而对象的 ...
- spark介绍3
- 双系统Grub引导下恢复windows引导的方法
此方法适用于windows系统正常,linux和windows 双系统下恢复windows系统引导.需要使用windows安装u盘 1. 启动至windows安装u盘,点击修复计算机 2. 进入命令行 ...
- xshell无法连接Ubuntu的解决办法
使用workstations14安装完Ubunu后,网络连接方式为NAT模式(N):用于共享主机的IP地址 此时想用xshell连接此虚拟机但是提示连接失败,但是宿主机和虚拟机互相都能ping通,且虚 ...
- .net core i上 K8S(七).netcore程序的服务发现
上一章我们分享了k8s的网络代理模式,今天我们来分享一下k8s中的服务发现. 1.环境变量模式的服务发现 k8s默认为我们提供了通过环境变量来实现服务发现的功能,前提是 1.需要service在pod ...
- 爆款AR游戏如何打造?网易杨鹏以《悠梦》为例详解前沿技术
本文来自网易云社区. 7月31日,2018云创大会游戏论坛在杭州国际博览中心103B圆满举行.本场游戏论坛聚焦探讨了可能对游戏行业发展有重大推动的新技术.新实践,如AR.区块链.安全.大数据等. 网易 ...
- jQuery如何追加内容?匿名函数
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...