C++ 实现类似Python中format函数

31 篇文章 0 订阅
订阅专栏

Python:

C++

代码:

_StrW _StrW::Python_format(const _StrListW& pArgList) const
{
    _StrW sResult;

    //设置缓冲区
    sResult.SetBuffer(_nLength + pArgList.GetStringLength());

    int iCount = 0;

    for (int i = 0; i < _nLength; ++i)
    {
        if (_pData[i] == _t('{'))
        {
            //查找第二个配对
            int iEnd = this->IndexOfRightPairChar(i, _t('{'), _t('}'));

            if (iEnd != -1)
            {
                //获取 {  }  中的数字字符
                _string sCount = SubStr(i, iEnd - i).GetAllArabicDigit();

                if (sCount.Length == 0)   //自动选择参数
                { 

                    if (iCount < pArgList.Count)
                    {
                        sResult.Add(pArgList[iCount]);
                    } 
                    else
                    {
                        sResult.Add(_t("{ NULL }"));
                    }
                    ++iCount; //参数计数             
                }
                else
                {
                    int n = _Math::StrToInt_t<_char>(sCount.Data); //指定参数
                     
                    if (n < pArgList.Count)
                    {
                        sResult.Add(pArgList[n]);
                    }
                    else
                    {
                        sResult.Add(_t("{ NULL }"));
                    }
                }

                i = iEnd;  //跳过 {??}  参数
            }

        }
        else
        {
            sResult.Add(_pData[i]);
        }
   
    }

    return sResult;
}

_StrW _StrW::Python_format(const _StrW& sArg, const _StrW& sSplit) const
{
    return Python_format(_StrListW(sArg, sSplit,true));
}

    /// <summary>
    /// 返回右边配对字符的位置
    /// </summary>
    /// <param name="sText"></param>
    /// <param name="nLeftPos"></param>
    /// <param name="cLeft"></param>
    /// <returns></returns>
    /// 创建时间:  2022-12-18      最后一次修改时间:2022-12-18   已测试(2022-12-18)
    int IndexOfRightPairChar(const int nLeftPos, const _char cLeft, const _char cRight)const
    {
        return gs.s_FindRightPairChar_t<T>(_pData, nLeftPos, cLeft, cRight);
    }

    /// <summary>
    /// 向后查找右边配对的字符,例如 { } [ ] 
    /// </summary>
    /// <typeparam name="T">字符串类型</typeparam>
    /// <param name="sText">文本</param>
    /// <param name="nLeftPos">第一个字符出现的位置</param>
    /// <param name="cLeft">第一个字符</param>
    /// <param name="cRight">第二个字符</param>
    /// <returns></returns>
    template<class T>
    static int s_FindRightPairChar_t(const T* sText, const int nLeftPos, const T& cLeft, const T& cRight)
    {
        int iFlag = 0;

        int n = nLeftPos + 1;

        while (sText[n] != 0)
        {
            T c = sText[n];

            if (c == cRight)
            {
                if (iFlag == 0) { return n; }
                --iFlag;
            }
            else if (c == cLeft)
            {
                ++iFlag;
            }
            ++n;
        }
        return -1;
    }

    /// <summary>
    /// 返回所有的数字
    /// </summary>
    /// <returns></returns>
    /// 创建时间: 2023-02-18      最后一次修改时间:2023-31-19
    inline _Str<T> GetAllArabicDigit()const
    {
        _Str<T> sResult;
        sResult.SetBuffer(_nLength);

        for (int i = 0; i < _nLength; ++i)
        {
            T c = _pData[i];
            if (gcf.gcf_isdigit(c))
            {
                sResult.Add(c);
            }
        }

        return sResult;
    }

示例:

代码:

超详细的 Python 方法、函数总结
Amo Xiang的博客
05-17 3万+
目录阅读前必读(不看会错过一个亿)一、字符串操作1.1 capitalize() 方法——字符串首字母转换为大写1.2 casefold() 方法——所有大写字符转换为小写1.3 center() 方法——字符串居填充1.4 count() 方法——统计字符串出现次数1.5 encode() 方法——编码字符串1.6 decode() 方法——解码字符串1.7 endswith() 方法——是否以指定子字符串结尾、startswith() 方法1.8 find() 方法——字符串首次出现的索引位置(rfi
C++ 字符串格式化 有没有类似python string format函数的写法
Kp0fS的草稿纸
03-21 1060
C++ 字符串格式化 有没有类似python string format函数的写法 坑
C++format函数
2301_80158456的博客
03-24 3390
C++20引入了库,它提供了类似Python的格式化字符串的功能。你可以使用std::format函数来格式化字符串。format 格式控制标记 [[fill]align][sign][#][0][wigth][precision][type]
python基础 ---pythonC++格式化输出的区别
Jiawen的博客
01-07 370
文章目录+号与join函数C风格的格式化输出format函数 (1)格式化输出的方式有很多种,通常需要格式化输出的都是字符串,简单的可以通过+号或者join函数来处理 (2) linux系统使用较多的是C风格的输出,用熟了也比较方便 (3)在python3,主要以format函数来完成字符串的格式化处理 +号与join函数 加号+:对两个字符串进行连接 join函数:可以对一些离散的或者有...
C++实现简单的Python风格字符串格式化函数
chenyuping333的博客
02-02 1807
PythonC++标准库,看到C++11新的变参模板,发现它可以用来实现一个简单的类似Python风格字符串格式化函数[^1],语法如下:。如果你需要一个丰富的字符串格式化功能,可以考虑使用这个库。
python字符串的格式化(format用法和类似于C的%d用法)
MInNrz的Love&Share
06-23 2346
第一个format的用法直接贴代码# format用法 a=1 b=2 c=3 print("{}------{}------{}".format(a,b,c)) print("{0}------{2}------{1}".format(a,b,c))输出结果为第二个类似于C语言的写法简单明了,不需要多的解释,字符串同理a=1.2345 b=2 str="abcde" print("a=%.2f\...
pythondisplay函数_Python-函数基础总结与内置函数
weixin_36381252的博客
01-13 3202
目录上篇文章思考题简介函数长什么样子?调用函数位置传参与关键字传参传参是值传递还是引用传递定义函数参数默认参数关键字参数参数组返回值指定参数、返回值类型内置函数标准类型函数dirhelpidlenstrtype数字类型函数转换工厂函数功能函数用于可迭代对象的函数思考题上篇文章思考题Python-字典总结(操作符、方法、内置函数)>>> d = {(1,):2} >>&...
Python调用C++编写的OpenCV函数
数字梦想
11-11 1498
Python调用C++编写的OpenCV程序(利用OpenCV生成Python包的原理)原理配置方法环境注意事项配置步骤使用 原理 利用OpenCV生成Python包的原理,将我们写的C++程序编译成Python包(本文介绍的是在Windows环境下,使用VS,Python 64位,其他环境按需修改) 原理 How OpenCV-Python Bindings Works? 参考learnope...
C++python混合编程之在python类构造函数传参方法
ISmileLi的博客
11-25 3660
一、说明:C++项目用到python相关的知识,这两天研究了一下C++python的混合编程,网上有很多这方面的介绍,但是怎么使用python类的构造函数传参的介绍却没有,这里研究一下,分享出来。(C++python相互调用的相关接口查询https://docs.python.org/2/index.html) 二、测试代码 1、C++代码: /*=================Cplu...
c++输出小数点后几位_python格式化输出:%s和format()用法比较
weixin_39862847的博客
11-22 441
1、python格式化输出历史起源python2.5之前,我们使用的是老式格式化输出:%s。从python3.0开始起(python2.6同期发布),同时支持两个版本的格式化,多出来的一个新版本就是利用format()函数,进行格式化输出。2、为什么要学习python3支持的新式格式化输出呢?虽然老式的语法,兼容性很好,但是它的功能很少,很难完成复杂的任务,而format()函数进行格式...
Pythonformat格式化输出
硬曲奇小屋
01-08 2万+
Python的格式化输出 方法一:传统方法 与C语言类似,可以采用“%”作为格式化输出的标记。如: print("The first number: %5d, the second number: %8.2f" % (123, 456.789)) 输出的结果为: The first number: 123, the second number: 456.79 不用做更多解释,分
python的两种格式化输出:% 和 format
月下花弄影
01-16 5375
例子: 我们想打印这样的一个语句: 今天是xx 年 xx月 xx日 与C语言类似,第一种方法 % 就是用来格式化字符串的。 第二种方法就是用format进行操作 两种方法各有好处。 例子: 第一类方法使用百分号,百分号后使用s,f等来控制字符串类型 第二类方法主要使用format,并结合{}来使用,大括号内部可以使用字符串来进行控制。 看个人兴趣,决定使用,一般来说,百分号可以少些一点代码...
C++ format 函数
热门推荐
nowhaha的专栏
08-20 4万+
C++ format 函数 C++编程 Format是一个很常用,却又似乎很烦的方法,以下是它的完整概貌,以供大家查询之用: 一、字符串 首先看它的声明: function Format(const Format: string; const Args: array of const): string; overload; 事实上Format方法有两个种形式,另外一种是三个参数
c++ 字符串格式 String Format 库 (替代printf)
缤纷冷泪的专栏
09-15 2402
Windows CString的formatque s
C++Format常用格式
daiyunxing0545的博客
11-04 8881
CString sss; char *p; sss.Format(L"%02x", pb1);//转化成16进制,不足2位前面补0 sss.Format(L"%u", pb1);//无符号十进制 sss.Format(L"%.4d", i);//不足4位前面补0 sss.Format(L"%4d", i);//不足4位前面补空格 sss.Format(L"%ld", i);//打印lo...
Format函数详解
07-13 3872
Format是一个很常用,却又似乎很烦的方法,本人试图对这个方法的帮助进行一些翻译,让它有一个完整的概貌,以供大家查询之用:首先看它的声明:function Format(const Format: string; const Args: array of const): string; overload;事实上Format方法有两个种形式,另外一种是三个参数的,主要区别在于它是线程安全...
Python算法——链表(反转链表,合并两个排序链表,判断是否有环,链表倒数最后k个结点,第一个公共结点,删除重复元素)
Blusher1的博客
10-20 574
Python算法——链表(反转链表,合并两个排序链表,判断是否有环,链表倒数最后k个结点,第一个公共结点,删除重复元素)Python算法——链表(反转链表,合并两个排序链表,判断是否有环,链表倒数最后k个结点,第一个公共结点,删除重复元素)Python算法——链表(反转链表,合并两个排序链表,判断是否有环,链表倒数最后k个结点,第一个公共结点,删除重复元素)Python算法——链表(反转链表,合并两个排序链表,判断是否有环,链表倒数最后k个结点,第一个公共结点,删除重复元素)Python算法——链表
python 结构作业
最新发布
2301_81607383的博客
10-23 281
if-else判断语句while循环语句。
Python编程实例-猜数字游戏
视觉与物联智能
10-17 173
每个人都喜欢玩游戏。数字游戏既有趣又对大脑活动有益。在本文,我们将使用Python创建一个有趣的数字猜谜游戏
python类似Cpp输出对齐的方式吗
09-21
Python 虽然不像 C++ 那样直接提供内置的格式化操作来实现严格的列对齐,但它通过字符串格式化(f-string 或 old-style % 操作符)可以模拟类似的效果。例如,你可以使用 `format()` 函数或者 f-string 的 `{}` ...
写文章

热门文章

  • Visual Studto 2022 如何创建 C++ CLR Windows窗体应用程序 7702
  • Google C++ Style Guide 谷歌 C++编码风格指南 2482
  • C#创建一种新的文件格式 2341
  • 利用C,C++的宏,获取变量名! 1594
  • Visual Studio 2022 C++ CLR 的艰难除 Bug 1532

分类专栏

  • C++ 31篇
  • 元函数 3篇
  • 深度学习 6篇
  • ChatGpt
  • 词法分析 23篇
  • 语法分析 11篇
  • Java语言 基础知识 8篇
  • 开发环境 7篇
  • N维数组 9篇
  • 代码规范 1篇
  • 文本加密 1篇
  • 文本处理 1篇
  • 代码助手 2篇

最新评论

  • 二分法查找有序表的通用算法(可查链表,数组,字符串...等等)

    大数据卷神: 优质好文,博主的文章细节很到位,兼顾实用性和可操作性,内容和细节都很到位,期待博主持续带来更多好文

  • Google C++ Style Guide 谷歌 C++编码风格指南

    weixin_43964601: 链接打不开啊

  • Visual Studto 2022 如何创建 C++ CLR Windows窗体应用程序

    twilightIRIS: 您好,为什么我创建项目之后 pch.h 报错,显示没有这个头文件,这是什么问题呢?

  • Visual Studto 2022 如何创建 C++ CLR Windows窗体应用程序

    做我自己445: 我第五步的时候在项目上点右键属性怎么没有链接器选项啊表情包

  • 让Android Studo 不编译某个Java文件

    Haunis: 有用,点赞

最新文章

  • 双向链接表的反向迭代器(更新)( VC 和 QT都已编译过关)
  • 类型转换 与 explicit 关键字作用
  • 稳定排序std::stable_sort 与 自定义多规则排序。
2024
10月 8篇
09月 10篇
08月 3篇
07月 4篇
05月 4篇
04月 5篇
03月 2篇
01月 5篇
2023年14篇
2022年66篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家上海弧形玻璃钢花盆淮北玻璃钢雕塑工程天津仿铜玻璃钢雕塑设计济宁梅州玻璃钢卡通雕塑玻璃钢埃及雕塑定制湖北欧式玻璃钢雕塑图片梅州玻璃钢雕塑供应商奉贤区拉丝玻璃钢雕塑价格临沧市玻璃钢雕塑费用广东超市商场美陈研发南京古铜玻璃钢雕塑东莞会发光的玻璃钢雕塑现货贵阳玻璃钢小品雕塑濮阳哪里有玻璃钢彩绘雕塑定制校园玻璃钢卡通雕塑厂家现货高质量玻璃钢雕塑订做价格高架桥玻璃钢花盆哪里有卖的襄阳商场美陈抽象玻璃钢雕塑怎么选组合式玻璃钢卡通雕塑造型锦州玻璃钢雕塑生产厂家人物卡通玻璃钢雕塑定制玻璃钢流水茶壶雕塑陕西泡沫玻璃钢卡通雕塑江门玻璃钢雕塑费用文山玻璃钢雕塑制作厂家景观玻璃钢动物雕塑批发红色大玻璃钢花盆价格北京主题商场美陈销售玻璃钢花盆哪个牌子的好香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化