广告
返回顶部
首页 > 资讯 > 精选 >boost字符串处理函数format怎么使用
  • 294
分享到

boost字符串处理函数format怎么使用

2023-07-02 10:07:38 294人浏览 泡泡鱼
摘要

这篇文章主要介绍“boost字符串处理函数fORMat怎么使用”,在日常操作中,相信很多人在boost字符串处理函数format怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”boost字符串处理函数f

这篇文章主要介绍“boost字符串处理函数fORMat怎么使用”,在日常操作中,相信很多人在boost字符串处理函数format怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”boost字符串处理函数format怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

用boost::format来格式化字符串

在字符串处理中少不了格式化字符串,c++中传统的格式化函数是C语言的sprintf,但它一个很大的问题就是不安全。因此,在stl中引入了stringstream来实现安全格式化,但是stringstream却远不如sprintf来得直观。例如,对如如下代码:

    char text[]="hello";        bool is_all_lower = boost::alGorithm::all(text, is_lower());    char output[128];    sprintf(output, "<%s> %s in the lower case", text, (is_all_lower? "is": "is not"));

如果把最后两句format的函数用stringstream来写的话,可读性是远不如sprintf的。

    stringstream output;    output << "<" << text << "> "        << (is_all_lower)? "is": "is not")         << " in the lower case";

boost引入了一个提供类似.net中的string.format的方式提供格式化字符串的函数,用它来格式化的话就是如下形式:

    boost::format fmt = boost::format("<%s> %s in the lower case") % text % (is_all_lower? "is": "is not");    string output = fmt.str();

前面的例子中演示的是C风格的格式化字符串,boost.format也提供了类似.net风格的格式化字符串方式:

    boost::format fmt = boost::format("<%1%> %2% in the lower case") % text % (is_all_lower? "is": "is not");    cout << fmt << endl;

这种方式更容易看到参数在格式化字符串中的位置,推荐这种形式。不过它的起始坐标是1而不是0,用惯了.net的string.format的朋友需要注意下。

格式化控制

格式化语法为: [ N$ ] [ flags ] [ width ] [ . precision ] type-char。也提供了C语言和.net两种风格。

    //传统c语言风格    cout << boost::format("\n\n%s"             "%1t 十进制 = [%d]\n"             "%1t 格式化的十进制 = [%5d]\n"             "%1t 格式化十进制,前补'0' = [%05d]\n"             "%1t 十六进制 = [%x]\n"             "%1t 八进制 = [%o]\n"             "%1t 浮点 = [%f]\n"             "%1t 格式化的浮点 = [%3.3f]\n"             "%1t 科学计数 = [%e]\n"             ) % "example :\n" % 15 % 15 % 15 % 15 % 15 % 15.01 % 15.01 % 15.01 << endl;     //.net的风格    cout << boost::format("%1%"             "%1t 十进制 = [%2$d]\n"             "%1t 格式化的十进制 = [%2$5d]\n"             "%1t 格式化十进制,前补'0' = [%2$05d]\n"             "%1t 十六进制 = [%2$x]\n"             "%1t 八进制 = [%2$o]\n"             "%1t 浮点 = [%3$f]\n"             "%1t 格式化的浮点 = [%3$3.3f]\n"             "%1t 科学计数 = [%3$e]\n"             ) % "example :\n" % 15 % 15.01 << endl;

异常处理

既然boost.format函数是用来代替sprintf的,那么自然就得有异常处理的功能,而不是像sprintf那样死给你看。boost.format的处理方法是抛异常,它在如下两种情况家会抛异常:

  • format字符串非法

  • format绑定非法

如下代码演示了这两种情形:

    try    {        boost::format("<%3");    }    catch(std::exception& err)    {        cout << err.what() << endl;    }    boost::format fmt = boost::format("<%3%> %2% in the lower case") % text % (is_all_lower? "is": "is not");    try    {        cout << fmt << endl;    }    catch(std::exception& err)    {        cout << err.what() << endl;    }

封装

boost.format是以一个对象,而不是函数来实现的,导致其使用和异常处理起来要麻烦不少,不过,利用c++11的可变参数模板的语法还是可以很容易把它封装成一个可变参数的函数的形式:

string string_fromat(const char* format, …)

需要定义三个重载版本:

    template<class TFirst>    void string_format(boost::format& fmt, TFirst&& first)    {        fmt % first;    }    template<class TFirst, class... TOther>    void string_format(boost::format& fmt, TFirst&& first, TOther&&... other)    {        fmt % first;        string_format(fmt, other...);    }    template<class TFirst, class... TOther>    string string_format(const char* format, TFirst&& first, TOther&&... other)    {        boost::format fmt(format);        string_format(fmt, first, other...);        return fmt.str();    }

现在就可以这么用了:

auto output = string_format("<%1%> %2% in the lower case", text, (is_all_lower? "is": "is not"));

所有的异常也都会在该函数中抛出,虽然效率上相对低点,但用起来要舒服点。

到此,关于“boost字符串处理函数format怎么使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: boost字符串处理函数format怎么使用

本文链接: https://www.lsjlt.com/news/341400.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • boost字符串处理函数format怎么使用
    这篇文章主要介绍“boost字符串处理函数format怎么使用”,在日常操作中,相信很多人在boost字符串处理函数format怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”boost字符串处理函数f...
    99+
    2023-07-02
  • boost字符串处理函数format的用法
    用boost::format来格式化字符串 在字符串处理中少不了格式化字符串,C++中传统的格式化函数是C语言的sprintf,但它一个很大的问题就是不安全。因此,在stl中引入了s...
    99+
    2022-11-13
  • Python3中怎么使用format函数格式化字符串
    Python3中怎么使用format函数格式化字符串,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在Python3中,字符串格式化操作通过format()方法或者f’strin...
    99+
    2023-06-02
  • python字符串处理函数怎么使用
    Python字符串处理函数可以通过调用函数的方式来使用。以下是一些常用的字符串处理函数的示例用法:1. len() 函数:返回字符串...
    99+
    2023-09-16
    python
  • Python format字符串格式化函数的使用
    目录一、简介二、占位符%方式三、format格式化方式1、使用默认位置方式2、使用指定位置方式3、使用列表方式4、使用字典的键值对方式5、其他数字格式化的方式四、Reference一...
    99+
    2022-11-12
  • PHP函数的字符串处理函数
    PHP是一种非常流行的编程语言,它广泛用于Web开发。在PHP中,字符串处理是非常重要的,因为Web开发中大部分的数据都是以字符串的形式出现的。为了方便开发人员对字符串进行操作,PHP提供了许多有用的字符串处理函数,它们的使用非常简单,本文...
    99+
    2023-05-19
    函数 PHP 字符串处理
  • GO语言字符串处理Strings包的函数怎么使用
    这篇文章主要介绍了GO语言字符串处理Strings包的函数怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇GO语言字符串处理Strings包的函数怎么使用文章都会有所收获,下面我们一起来看看吧。常用的字符...
    99+
    2023-06-30
  • 字符串相似度处理函数
    oracle里面查比如存储过程里面与表SALES有关jobs: SELECT * FROM (SELECT a.name,upper(b.what)AS what,SYS.UTL_MATCH.edit_dist...
    99+
    2021-03-02
    字符串相似度处理函数
  • mysql字符串处理函数大全
    ASCII():返回给定字符的ASCII值。 示例:SELECT ASCII('A'); 返回65。 BIN():将给定的整数转换为二进制字符串表示。 示例:SELECT BIN(10); 返回'10...
    99+
    2023-09-18
    mysql 数据库
  • Python字符串函数怎么用
    这篇文章给大家分享的是有关Python字符串函数怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Python的友好在于提供了非常好强大的功能函数模块,对于字符串的使用,同样提供许多简单便捷的字符串函数。Pyt...
    99+
    2023-06-22
  • C语言如何使用字符串处理函数
    这篇文章主要介绍了C语言如何使用字符串处理函数,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。strlen:1.计数器版本:#include<stdio.h>#in...
    99+
    2023-06-22
  • Python3中字符串格式化format函数详解是怎样的
    这期内容当中小编将会给大家带来有关Python3中字符串格式化format函数详解是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。格式限定符format通过丰富的的“格式限定符”(语法是 {}中带:...
    99+
    2023-06-02
  • 怎么在python中使用format()方法操作字符串
    怎么在python中使用format()方法操作字符串?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Python主要用来做什么Python主要应用于:1、Web...
    99+
    2023-06-14
  • C语言的字符函数和字符串函数怎么用
    这篇文章主要讲解了“C语言的字符函数和字符串函数怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言的字符函数和字符串函数怎么用”吧!一、字符&字符串函数1.strlen--求...
    99+
    2023-06-26
  • php字符串处理函数有哪些
    php中常用的字符串处理函数有strlen()、strpos()、trim()几种strlen()函数strlen()函数作用:php中strlen()函数的作用是用于获取字符串的长度。strlen()函数语法:strlen(st...
    99+
    2022-10-07
  • php字符串反转函数怎么使用
    在PHP中,可以使用`strrev()`函数来实现字符串的反转。该函数接受一个字符串作为参数,并返回其反转后的结果。以下是一个示例:...
    99+
    2023-10-11
    php
  • python字符串切割函数怎么使用
    Python中字符串切割函数使用的是split()方法。该方法可以将一个字符串按照指定的分隔符进行切割,返回一个切割后的字符串列表。...
    99+
    2023-09-16
    python
  • php字符串查询函数怎么使用
    这篇“php字符串查询函数怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php字符串查询函数怎么使用”文章吧。php...
    99+
    2023-06-29
  • python怎么使用rstrip函数删除字符串末位字符
    今天小编给大家分享一下python怎么使用rstrip函数删除字符串末位字符的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。p...
    99+
    2023-07-05
  • sql中有哪些字符串处理函数
    本篇文章给大家分享的是有关sql中有哪些字符串处理函数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、常用函数 1、ASCII() ...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作