C++实现字符串格式化(StringFormat)

C++实现字符串格式化(StringFormat)
闲来⽆事,随⼿写⼀个 String Format。
长久以来都想实现⼀个 String Format,直到现在才有了应⽤环境。前段时间在百度上没有到合意的库,⼏乎都是 snprintf 套了⼀层,格式化字符串依旧还是 %d,%x,%s ⼀股发霉的味道,⽽到使⽤⽅便的库⼜太庞⼤,有⼏⼗个源⽂件,上千⾏源码。我只想要⼀个使⽤⽅便,⼩巧,性能凑合的 Format 函数⽽已。尝试⾃⼰实现了⼀个,出乎意料的顺利。
vs2015编译执⾏得出结果(分别在1秒内记录执⾏的次数)
Test 1:⼀个字符串参数
snprintf(buffer, 40960, "%s", "format, format, format, format, format");
Format("{0}, {0}, {0}, {0}, {0}", "format");万方数据资源系统
结果:6007517 4276270
小马拉多纳Test 2:多个相同字符串参数
snprintf(buffer, 40960, "%s, %s, %s", "format", "format", "format");污染
Format("{0}, {0}, {0}", "format");
结果:3995225 6990799
Test 3:整数改性沥青混合料
snprintf(buffer, 40960, "%d, %d, %d", 999999, 999999, 999999);
Format("{0}, {0}, {0}", 999999);
结果:2713117 5522970
Test 4:浮点数
snprintf(buffer, 40960, "%lf, %lf, %lf", 999999.0, 999999.0, 999999.0);
Format("{0}, {0}, {0}", 999999.0);
结果:923397 706681
特点
代码简短,仅40⾏。唐弢
类型安全
⽀持可变参数
参数可乱序传⼊
格式化字符串⽆需指定参数类型
格式化字符串可以指定⽆效参数
可重载 ToString 扩展⾃定义类型
现代汉语规范词典性能相⽐ vs2015 的 snprintf 还算不错(⽐ vs2013 的snprintf 快了近20倍),⽐ stringstream 快⼏⼗倍。

本文发布于:2024-09-22 04:26:51,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/10454.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:参数   字符串   百度   性能
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议