程序中经常需要用到字符串格式化,就个人而言还是比较倾向于C格式的输出,如果只是打印日志,printf就够了,如果到生成字符串,获取你可以选择sprintf,但这些都是需要你预先分配空间的,对于一些不可预知长度的字符串格式化,就比较鸡肋了,不过还是可以实现的,如:

void XString::format(const char *strFmt, ...)
{
    va_list vl;
    va_start(vl, strFmt);
    int count = _vscprintf(strFmt, vl); //_vsctprintf(format, vl);
    va_end(vl);
    char *pszBuf = new char[count + 1];
    va_start(vl, strFmt);
    vsprintf_s(pszBuf, count + 1, strFmt, vl);  //_vstprintf_s
    va_end(vl);
    this->assign(pszBuf);
    delete pszBuf;
}

但对于C++程序来说,%s支持的字符串参数类型必须是char*, 所以程序到处都需要.c_str(),经常也会因此造成大量的乱码输出

有了boost的format组件,以上问题就都迎刃而解了。

一、format 替代printf的功能

std::cout << format("%s:%04d%02d%02d") % "日期"% 2013 % 9 % 28 << std::endl;

%s可以是std::string

std::string test("string");
format fmt3("%s");
std::cout << format("%s") % test<< std::endl;

二、format支持%N

format fmt2("%1% + %2%*%1% = %3%");
fmt2 % 2 % 3 % (2+2*3) ;
std::cout << fmt2.str() << std::endl;

(二)boost库之字符串格式化相关推荐

  1. MFC中将用户输入的表示16进制数的字符串转换成16进制数输出显示(包含1.wstring转成string的方法函数2.用boost库拆分字符串的函数3.字符转16进制数值的函数)

    前期准备: 1.电脑中安装好boost库,我的电脑中安装在C盘根目录下,如下图所示: 2.配置好boost环境变量,如下图所示: 3.开发环境VS2015,工程为MFC应用程序 需要的头文件如下: # ...

  2. (三)Boost库之字符串处理

    字符串处理一直是c/c++的弱项,string_algo库很好的弥补了这一点. string_algo 库算法命名规则:  前缀i    : 有这个前缀表名算法的大小写不敏感,否则大小写敏感  后缀_ ...

  3. C++ Boost库:简介和第一个示例程序

    文章目录 1. 简介 2. Boost库开发环境搭建 3. 一个简单的示例程序 4. hpp文件简介 C++ Boost库:简介和第一个示例程序 C++ Boost库:数值转换 lexical_cas ...

  4. C++ Boost库:数值转换 lexical_cast

    文章目录 1. C/C++数值转换函数 2. boost数值转换lexical_cast C++ Boost库:简介和第一个示例程序 C++ Boost库:数值转换 lexical_cast C++ ...

  5. C++ Boost库:日期时间库 date_time

    文章目录 1. 简介 2. 基本使用 3. date_period类 4. ptime类 5. time_period类 C++ Boost库:简介和第一个示例程序 C++ Boost库:数值转换 l ...

  6. C++ Boost库:windows下编译Boost库

    文章目录 1. 需要编译的boost库 2. 编译步骤 3. 库命名规则 4. VS配置库目录 C++ Boost库:简介和第一个示例程序 C++ Boost库:数值转换 lexical_cast C ...

  7. C++ - std::string字符串格式化方法总结

    文章目录 1 C++ std::string字符串格式化 1.1 C语言中的字符串格式化 1.2 C++使用std::stringstream进行字符串格式化 1.3 开源的C++单个头文件的字符串格 ...

  8. Boost库学习笔记(二)算法模块-C++11标准

    Boost库学习笔记(二)算法模块-C++11标准 一.综述 Boost.Algorithm是一系列人通用推荐算法的集合,虽然有用的通用算法很多,但是为了保证质量和体积,并不会将太多通用算法通过审查测 ...

  9. 使用logcxx库和boost库构建系统日志的格式化输出

    作者:朱金灿 来源:http://blog.csdn.net/clever101/ logcxx库作为一个强大的C++日志系统,在业内得到越来越多的应用.但是logcxx库欠缺一个格式化日志输出的能力 ...

最新文章

  1. NAT技术解决了IPv4地址短缺的问题,假设内网的地址数是m,而外网地址数n,若mn,则这种技术叫做(66),若mn,且n=1,则这种技术这叫做(67)。【答案】A C
  2. 成本VS用户体验, 服务台互动语音应答(IVR)介绍
  3. C语言ODBC数据库操作
  4. 合工大python期末复习知识点汇总
  5. H264码流打包分析
  6. python中文字符串转list
  7. python2 与 python3的区别
  8. Android软键盘与EditText近乎完美的交互
  9. 揭开艺术特长考试神秘面纱
  10. 怎样找回xp调整分区后盘符不见的文件
  11. 计算机四级网络工程师等级考试题库软件---百度云分享
  12. header元素的使用
  13. opencv3中的图像混合操作
  14. 计算机技术预测蛋白质结构,线上分享 | 同源建模预测蛋白质结构,中科院计算所ProALIGN研究解读...
  15. 查看服务器gpu使用情况以及使用者
  16. 【天光学术】会计论文:S 快递企业借壳上市动因及效益分析(节选)
  17. Win10忘记pin码以及密码的解决办法(亲测有用)
  18. pybullet入门第一节
  19. Centos 7下安装pip(简略版)
  20. 自己平时长期积累的java资料可供大家学习

热门文章

  1. 反射通过配置文件运行的步骤
  2. 后台服务系统之什么是dubbo
  3. excel转html放在tomcat,Excel转web!把excel在线打开??
  4. dicom格式怎么转换_QQ音乐下载的歌曲怎么转换MP3?音频转换格式详细教程
  5. 将 C++ 中的 goto 语句转化为非 goto 语句
  6. 一家创业公司发展历程-真实记录
  7. 国家文物局:长城沿线群众是文物保护的重要力量
  8. 简单谈谈Docker镜像的使用方法_docker
  9. 用sql语句获取连续整数id中,缺失的最小id和最大id
  10. HTTP协议之http状态码详解