头文件:

#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. Perl 学习笔记-哈希

    1.Perl中的哈希 高效快捷, 没有大小限制. 大哈希一样很快! 命名: 和Perl其他标识符一样, 同时拥有自己的的名字空间.  $roger{"sex"} 和 $roger没 ...

  2. Ubuntu14.04下 安装xhprof

    1.下载xhprof包: wget http://pecl.php.net/get/xhprof-0.9.4.tgz 2.解压 进入扩展目录 .tgz cd /home/justphp/xhprof- ...

  3. srand()、rand()、time()函数的用法

    srand()就是给rand()提供种子seed. 如果srand每次输入的数值是一样的,那么每次运行产生的随机数也是一样的. 以一个固定的数值作为种子是一个缺点.通常的做法是 :以这样一句srand ...

  4. Android学习笔记——文件路径、内容Uri学习笔记[转]

    一.URI 通用资源标志符(Universal Resource Identifier, 简称"URI"). Uri代表要操作的数据,Android上可用的每种资源 - 图像.视频 ...

  5. 保证Service不被Kill的解决方案

    1.Service设置成START_STICKY(onStartCommand方法中),kill 后会被重启(等待5秒左右),重传Intent,保持与重启前一样 2.通过 startForegroun ...

  6. Reactor模式和NIO(转载二)

    本文可看成是对Doug Lea Scalable IO in Java一文的翻译. 当前分布式计算 Web Services盛行天下,这些网络服务的底层都离不开对socket的操作.他们都有一个共同的 ...

  7. DRBD 数据镜像软件

    1>DRBD介绍 1>数据镜像软件DRBD介绍  分布式块设备复制(Distributed Relicated Block Deivce,DRBD),是一种基于软件.基于网络的块复制存储解 ...

  8. javascript高级程序设计读书笔记----引用类型

        Array类型. ECMAScript数组的每一项可以保存任何类型的数据. 数组大小是可以动态调整的. 创建数组第一种基本方式方式: 使用Array构造函数 var colors = new ...

  9. Linq分组操作之GroupBy,GroupJoin扩展方法源码分析

    Linq分组操作之GroupBy,GroupJoin扩展方法源码分析 一. GroupBy 解释: 根据指定的键选择器函数对序列中的元素进行分组,并且从每个组及其键中创建结果值. 查询表达式: var ...

  10. Dev 之 GridControl 列表 显示底部(包括底部统计)

    1.列表 Gridview 显示底部 2 底部增加统计