头文件:

#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()的使用的更多相关文章

  1. setprecision(int n)等格式函数用法 分类: POJ 2015-06-11 10:56 17人阅读 评论(0) 收藏

    **这些用法前最好用 #include <iostream>    //不要用iostream.h ,会出现好多问题 #include <iomanip> // io 流控制头 ...

  2. c++ 作业 10月13日 进制转换最简单方法,控制c++输出格式方法 教材50的表格自己实践一下 例题3.1 setfill() setw()

    #include <iostream> #include <iomanip> using namespace std; int main(){ // int i; // cou ...

  3. setw()函数

  4. iomanip,setw(),setw: undeclared identifier

    今天使用setw(),提示setw: undeclared identifier,上网查了下,原来是没有包含头文件iomanip,现摘录如下: iomanip #include <iomanip ...

  5. 从零开始学C++之IO流类库(四):输出流格式化(以操纵子方式格式化 以ios类成员函数方式格式化)

    一.以操纵子方式格式化 数据输入输出的格式控制使用系统头文件<iomanip>中提供的操纵符.把它们作为插入操作符<<的输出对象即可.如setiosflags.setw.set ...

  6. 输出流格式化(以操纵子方式格式化,以ios类成员函数方式格式化)

    一.以操纵子方式格式化 数据输入输出的格式控制使用系统头文件<iomanip>中提供的操纵符.把它们作为插入操作符<<的输出对象即可.如setiosflags.setw.set ...

  7. 文件重定向,getline()获取一样,屏幕输出流,格式控制符dec,oct,hex,精度控制setprecision(int num),设置填充,cout.width和file(字符),进制输入

     1.在window下的命令重定向输出到文件里 2.将内容输入到某个文件里的方式:命令<1.txt (使用1.txt中的命令) 3.读取文件里的名,然后将命令读取最后输出到文件里.命令< ...

  8. C++第五章函数

    书上的点: 这次直接写写画画了,遇到的bug也就直接敲了,忘记记录了,好在都在书上,所以勾画一下,提一下.发现每一章后面的小结,都蛮有意思的.可以抄一遍. 1.返回值的函数成为返回值函数(value- ...

  9. STL容器

    啦啦啦,今天听啦高年级学长讲的STL容器啦,发现有好多东西还是有必要记载的,毕竟学长是身经百战的,他在参加各种比赛的时候积累的经验可不是一天两天就能学来的,那个可是炒鸡有价值的啊,啊啊啊啊啊 #inc ...

随机推荐

  1. cookie用法小结 cookie.setPath 跨域共享

    1. JSP中Cookie的读写 Cookie的本质是一个键值对,当浏览器访问web服务器的时候写入在客户端机器上,里面记录一些信息.Cookie还有一些附加信息,比如域名.有效时间.注释等等. 下面 ...

  2. 并发编程CAS操作

    并发编程CAS操作 简介 CAS即compare and swap,中文就是比较并交换 CAS是Java并发包的基石 原理 其实CAS的原理相对来说比较简单.将要被改变的数据和期望的值作比较,当两个值 ...

  3. mybatis-generator命令行生成代码

    目录文件如下: generator.xml文件如下: <?xml version="1.0" encoding="UTF-8"?> <!DOC ...

  4. 将std::string当字节流使

    string是C++标准定义的字符串类,它不但支持文本,而且支持二进制字节流.给一个string变量赋值有多种方法: 1) 拷贝构造函数 2) 等号赋值函数 3) append成员函数 4) push ...

  5. 查看Linux系统是32位的还是64位的

    方法1: getconf LONG_BIT 上面显示我先用的是32位的系统. 方法2: .uanme -a .uname -m 显示i686或x86就是32位的系统,显示x86_64就是64位系统. ...

  6. Android-ContentProvider理解操作系统的多媒体

    在多年以前,我做一款音乐播放器,要把很多.mp3文件,放置在自己新建的文件夹里面,然后去读取这个新建的文件夹里面的音乐列表,现在想想是多么的无知: 因为只要往手机里面放入.mp3文件,系统会自动检测, ...

  7. NuGet文件下载与应用

    nuget是一款.net下强大的包管理开发工具,Visual Studio 2013和Visual Studio 2015都缺省支持Nuget.在线开发能享受到Nuget的便利,但是如果是离线开发,还 ...

  8. ExtJS浏览器对象模型BOM——命名空间和用户代理对象、Cookie

    BOM(浏览器对象模型(BrowserObjectModel)),允许访问和操控浏览器窗口.研发者通过使用BOM,可移动窗口.更改状态栏文本.执行其它不与页面内容发生直接联系的操作. 本文将从ExtJ ...

  9. ParserError: Error tokenizing data. C error: Expected 2 fields in line 15, saw 4

    pandas 读取泰坦尼克号数据,报错 %matplotlib inline import numpy as np import pandas as pd import re as re train ...

  10. 870. Advantage Shuffle

    Given two arrays A and B of equal size, the advantage of A with respect to B is the number of indice ...