boost::format

article/2025/11/6 3:42:47
实在不好意思,原本计划每天一篇,这几天工作遇到问题,只好改为“不定期”一篇,  调皮
今天是format library,其实N天前我已经看过了,也动手实验了一下,现在才来把笔记补上。
用过MFC或ATL中的CString的人一定知道CString::Format方法,比起CRT中的sprintf来,CString的Format就显得“安全”和易用多了:不需要算好字符串最大长度来分配接收的内存空间,只要是sprintf支持的数据类型,都可以格式化成字符串,性能么——偶不知道。然而,若想用CString,不用MFC也得带上ATL,悲惨那~
不废话了,晚上还要洗澡&早点睡觉,直接奔主题!
boost库提供了format库来完成比CString::Format更酷的任务。不知道有多少人用过.NET中的String.Format,boost提供的format跟这个相当:只需要在格式化字符串中指定位置和参数序号,不需要指定什么类型,而且原则上只要实现了流操作的类型都支持!
下面具体点,举个例子:

cout << format( "%1% says \"%2%\" to %1%.\n" ) % "Yousen" % "Hello";

这句话将在标准输出上输出“Yousen says "Hello" to Yousen.”
接下来简单说明一下format的用法。估计聪明人都猜到了,在格式化字符串中,“%1%”(不带引号,后称占位符)表示后面跟的第一个参数,“%2%”则表示第二个,以此类推——注意:占位符是从1开始计数,兄弟们别记错了。后面的“%”(当然也不带引号)操作符的意思么……这是format类(千万别把它当作是个函数)重载的操作符,用来替换格式化字符串中的占位符。
刚才说了,format是个类,确切的说format是这样定义的:

typedef basic_format<char> format;

看清楚了哦,要想用unicode(宽字符)版的format,就用wformat。

typedef basic_format<wchar_t> wformat;

现在来试试format的实例:

#include <boost/format.hpp>
#include <iostream>
#include <string>

using namespace std;
using namespace boost;

int main()
{
 format fmt( "%2% says \"%1%\"." );
 fmt % "Yousen";
 fmt % "Hello";
 string str = fmt.str();
 cout << "string from fmt: " << str << endl;
 cout << "fmt: " << fmt << endl;
}

输出:

string from fmt: Hello says "Yousen".
fmt: Hello says "Yousen".

假如已经有一个format对象了,想要改变格式化字符串,调用format::parse方法。如:

format fmt;
fmt.parse( "%1% %2%" );

在获取fmt输出之前,若是参数不足或者多余格式化字符串所指定的数量,则可能会抛出下列异常:
bad_format_string
too_few_args
too_many_args
out_of_range
这些都是format_error类的派生类,format_error则派生于std::exception类。
上面举例的format格式字符串都是非常简单的。format实际上提供了非常强大的格式化控制。这是格式化字符串中占位符的完整语法:

[ N $ ] [ flags ] [ width ] [ . precision ] type-char

其中N为参数序号,从1开始计数;flags是格式控制标志;width为格式化输出宽度,.precision为显示小数点后面位数;type-char为输出类型控制符——除了序号,其他内容和printf中的一样。不罗嗦了。自己看后面的参考站点。
注意前面有个%,如果用简单模式(仅表示参数序号),后面也得跟上一个%。
除此之外,format也兼容prinf风格格式化字符串,但是不能和format自己的格式化字符串混用。如“%s says %2%”这样是不行滴,运行时会抛出异常。还有,在使用printf风格字符串时,所有跟进的参数都将顺序替换占位符。
最后一点是关于用户自定义类的格式化,原则上,只要定义了相应的流输出(operator<<(std::ostream,...))操作符,就能够被format所支持。而且假如指定了详细的格式,format则会尽可能的去实现。也不罗嗦了,洗澡睡觉!

其他详细情况则参考:http://www.boost.org/libs/format/doc/format.html
对了,还有一件很重要的事情忘了说:大家如果觉得有什么问题的,跟帖;如果发现错误的,跟帖。共同进步哦!

http://chatgpt.dhexx.cn/article/uebvo7ba.shtml

相关文章

adboost

要明确Adaboost是一种算法。 介绍一下Adaboost的历史。 Adaboost的前身的Boosting算法。 Boosting是一种提高任意给定学习算法准确度的方法。它的思想起源于Valiant提出的PAC(Probably Approximately Correct)学习模型。Valiant和Kearns提出了弱学习和强学习的概念,识别错误…

buuctf easymd5

点击f12&#xff0c;查看源代码看看有没有消息 Hint&#xff1a;select * from ‘admin’ where password md5($pass,ture) 我们要让passwordmd5($pass,ture) mysql里面&#xff0c;在用作布尔型判断时&#xff0c;以数字开头的字符串会被当做整型数。 要注意的是这种情况是必…

fastboot与fastbootd介绍

fastboot与fastbootd介绍 前言一、fastboot和fastbootd介绍二、fastbootd与fastbootd区别参考文献 前言 在项目中遇到使用fastboot刷机场景&#xff0c;刷vendor分区出现异常&#xff0c;从而对fastboot和fastbootd有一个更深入的了解&#xff0c;进行一个总结。 一、fastbo…

Everything+Wox

Everything可对磁盘上文件/文件夹进行快速查找 Wox可对应用程序/网站进行快速启动 两者最好结合使用&#xff08;结合使用&#xff0c;两个软件都必须都启动&#xff09; Everything 下载地址&#xff1a;https://www.voidtools.com/zh-cn/ Wox 下载地址&#xff1a;https://gi…

wox wpm 安装 有道插件

1. wox 安装插件 可以通过右键点击setting&#xff0c;到官网上安装&#xff0c;也可以采用简单的方法&#xff1a; wpm install 有道翻译注意&#xff0c;选择有道翻译即可。 2. 英译汉 yd china3. 汉译英

Wox使用指南

下载安装 从下载地址下载最新版本的 wox &#xff0c;我下载的是 exe 版的 Wox-1.3.578.exe 下载以后直接安装即可&#xff0c;不会有选择项&#xff0c;安装成功以后会在屏幕上出现一个搜索框&#xff0c;默认失去焦点以后搜索框就会消失&#xff0c;可以在系统状态栏的 wox 图…

实用工具 Wox

今天分享一个我一直在用&#xff0c;并且让我爱不释手的一个工具软件&#xff0c;Wox。 Wox 是一款国产开源免费的软件快捷启动工具&#xff0c;它可以快速搜索并打开你电脑上的程序、文件、或是查词翻译、网站查找等其他操作&#xff0c;同时还支持插件安装。 Tips: 如果你需…

使用Python编写Wox插件

最近正再使用Wox&#xff0c;这个软件还挺高效的&#xff0c;而且还能自己编写一些插件&#xff0c;这里打算自己写点插件用用. Wox官网 Plugin (wox.one)插件,此外官方也提供了编写文档&#xff0c;编写插件 GitBook (wox.one)提供Python和C#两种优秀的语言编写方案。我这里就…

Wox插件之程序员不安装会死系列

Wox 安装 在操作系统上&#xff0c;可快速启动、计算、查找程序、文件等&#xff0c;同时也提供了一系列插件&#xff0c;使用起来非常的方便。默认启动 Wox 快捷键 Alt Space&#xff0c;当然你也可以自己设置自己喜欢的快捷键 Wox下载地址&#xff1a;下载地址 不安装会…

快速搜索Wox工具之Everything Client没有运行报错,解决办法!

一直在用的一款快速搜索神器——Wox&#xff0c;但是在使用过程中出现一个报错&#xff01; 报错如下&#xff1a; Everything Client 没有运行令我很烦&#xff0c;百度了一下&#xff0c;试了很多方法&#xff0c;还是不能发挥它的最大功效。 由于我是一个好学的人&#xff…

Wox - 开源免费强大的快捷启动器辅助工具,快速高效率打开软件/搜索文件!

在日常的电脑操作中&#xff0c;我们常常花很多时间重复做着一件事情&#xff1a;退回桌面/开始菜单->寻找软件图标->点击启动。但如果你喜欢高效的键盘操作&#xff0c;那么你需要一款好用的快速启动器软件。 我们曾介绍过 RunZ、Launchy、AltRun、Executor、Alfred 等…

自己做一个wox主题

wox WoX是运行正常的Windows启动器。它是Alfred和Launchy的替代方案。如果需要长名称&#xff0c;可以将其称为Windows omni-eXecutor。 如何替换样式 众所周知&#xff0c;wox自带主题比较丑&#xff0c;所以可以自己写 打开wox配置目录C:\Users\{{user_name}}\AppData\Lo…

wox开机自启_Wox具有一切支持的Windows启动器

Wox是用于Windows的由插件驱动的启动器&#xff0c;支持文件和Web搜索以及其他操作&#xff0c;您都可以通过点击程序的热键来访问它们。 它的核心功能类似于Windows上的其他文件启动器(如Launchy)所提供的功能。您可以使用快捷键Alt-Space调出程序的提示&#xff0c;并且可以立…

Everything+Wox介绍和使用方式

EverythingWox介绍和使用方式 相信很多人都会遇到这种情况&#xff0c;文件夹都放在不同的磁盘中&#xff0c;想要寻找会忘记文件夹存、图片等放的位置&#xff0c;这时候很多人都会运用Windows自带的搜索引擎搜索文件夹&#xff0c;而自带的搜索功能速度慢的感人&#xff0c;…

windows装机必备:文件查找神器Everything + Wox

问题背景 我们通常也不会花费大量地时间去整理文件&#xff0c;这导致我们想使用某个文件时难以找到&#xff0c;而Windows 操作系统不会给文件建立索引&#xff0c;这使得我们使用Windows自带的搜索功能时要消耗大量的时间。 比如我现在要在我的电脑上查找名为“学生成绩.tx…

WOX快速搜索

WOX wox和mac上的Aflred类似&#xff0c;虽然在功能上稍有逊色&#xff0c;但是还是可以给我们使用windows电脑带来很多福利。首先你不需要在桌面放一堆应用软件的快捷方式&#xff0c;桌面可以非常干净整洁&#xff0c;想要打开某个应用只需要叫出wox&#xff0c;输软件首字母…

WOX配置常用搜索引擎

我下载的Wox-1.4.1196自带了百度搜索的触发关键字。altspace唤出wox后&#xff0c;输“bd 搜索词”即可通过默认浏览器打开该搜索词的百度搜索网页。但是只有渣度怎么能够呢&#xff1f;通过如下方法可添加大陆其他搜索的触发关键字&#xff1a; 一些我常用的搜索的URL&#xf…

Wox主题样式基础的自定义

2020年10月21日更新: 从最开始用了几天Wox,然后down了源码&#xff0c;看完一遍之后就已经没在用了。一直用的windows10的winS的搜索功能&#xff0c;把一些常用的目录配置到搜索里面&#xff0c;用起来还凑合。 最近发现一款官方出的工具&#xff1a;microsoft/PowerToys 还有…

Wox+Everything结合使用

昨天晚上在b站看到一个视频&#xff0c;说你工作效率提高1400%&#xff0c;推荐了10款软件&#xff0c;这其中就是一款。 Tips: 如果你需要用到文件的快速搜索、打开功能&#xff0c;需要预先安装 Everything &#xff0c; 这里是 Everythig 的下载地址。 下载地址 Wox 的官方下…

Wox自制主题 - Material

很喜欢用Wox&#xff0c;主要用来搜索本地文件和翻译。为了和桌面主题&#xff08;我的鼠标的主题是Material的&#xff09;融合&#xff0c;美观一点&#xff0c;自己制作了两个皮肤。有需要的可以拿去用。 推荐使用utools&#xff0c;完全可以替代Wox了&#xff0c;更好用更…