热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

VC++std::string功能扩展

VC中使用频率最高的字符串莫过于std::string和CString了,但是std::string相比较CString而言,少了字符串格式化功能&#x

VC++中使用频率最高的字符串莫过于std::string和CString了,但是std::string相比较CString而言,少了字符串格式化功能,于是扩展一下,方便以后使用:

// xstring.h
#pragma once#include
#include
#include namespace SW{templateclass string: public basic_string<_CharT, _Traits, _Alloc>{public:typedef typename _Alloc::template rebind<_CharT>::other _CharT_alloc_type;typedef typename _CharT_alloc_type::size_type size_type;static const size_type npos &#61; static_cast (-1);inline string() :basic_string<_CharT, _Traits, _Alloc> (){}explicit string(const _Alloc& __a) :basic_string<_CharT, _Traits, _Alloc> (){}string(const string& __str) :basic_string<_CharT, _Traits, _Alloc> (__str){}string(const string& __str, size_type __pos, size_type __n &#61; npos) :basic_string<_CharT, _Traits, _Alloc> (__str, __pos, npos){}string(const string& __str, size_type __pos, size_type __n,const _Alloc& __a) :basic_string<_CharT, _Traits, _Alloc> (__str, __pos, __n, __a){}string(const _CharT* __s, size_type __n, const _Alloc& __a &#61; _Alloc()) :basic_string<_CharT, _Traits, _Alloc> (__s, __n, __a){}string(const _CharT* __s, const _Alloc& __a &#61; _Alloc()) :basic_string<_CharT, _Traits, _Alloc> (__s, __a){}string(size_type __n, _CharT __c, const _Alloc& __a &#61; _Alloc()) :basic_string<_CharT, _Traits, _Alloc> (__n, __c, __a){}templatestring(_InputIterator __beg, _InputIterator __end, const _Alloc& __a &#61;_Alloc()) :basic_string<_CharT, _Traits, _Alloc> (__beg, __end, __a){}string& operator&#61;(const string& __str){return this->assign(__str);}string& operator&#61;(const _CharT* __s){this->assign(__s);return *this;}string& operator&#61;(_CharT __c){this->assign(1, __c);return *this;}inline string& LeftTrim(){this->erase(0, this->find_first_not_of(" "));return *this;}inline string& RightTrim(){this->erase(this->find_last_not_of(" ") &#43; 1);return *this;}inline string& Trim(){LeftTrim();RightTrim();return *this;}inline string &Format(const char *_format, ...){va_list args;va_start(args, _format);char szBuffer[1000] &#61; { 0 };memset(szBuffer, 0x00, sizeof(szBuffer));try{vsnprintf_s(szBuffer, 1000, _format, args);} catch (...){cout <<"ERROR: format the string failed..." <assign(szBuffer);return *this;}inline string &AppendFormat(const char *_format, ...){char szBuffer[1000];memset(szBuffer, 0x00, sizeof(szBuffer));va_list ap;va_start(ap, _format);try{vsnprintf(szBuffer, 1000, _format, ap);} catch (...){cout <<"ERROR: format the string failed..." <append(szBuffer);return *this;}inline string &Replace(string oldStr, string newStr){string::size_type pos &#61; 0;string::size_type srcLen &#61; oldStr.size();string::size_type desLen &#61; newStr.size();pos &#61; find(oldStr, pos);while ((pos !&#61; string::npos)){strSrc.replace(pos, srcLen, newStr);pos &#61; strSrc.find(oldStr, (pos &#43; desLen));}return *this;}std::vector ExtractSubString(string separateStr, bool repeatedCharIgnored){string sSrc &#61; *this;std::vector resultStringVector;size_t pos &#61; sSrc.find(separateStr.c_str());string subString &#61; "";while (pos !&#61; string::npos){subString &#61; sSrc.substr(0, pos);if (!subString.empty() || !repeatedCharIgnored){resultStringVector.push_back(subString);}sSrc.erase(sSrc.begin(), sSrc.begin() &#43; pos &#43; separateStr.length());pos &#61; sSrc.find(separateStr.c_str());}subString &#61; sSrc;if (!subString.empty() || !repeatedCharIgnored){resultStringVector.push_back(subString);}return resultStringVector;}};using string &#61; basic_string, allocator>;using wstring &#61; basic_string, allocator>;using u16string &#61; basic_string, allocator>;using u32string &#61; basic_string, allocator>;
}

 


推荐阅读
  • 流数据流和IO流的使用及应用
    本文介绍了流数据流和IO流的基本概念和用法,包括输入流、输出流、字节流、字符流、缓冲区等。同时还介绍了异常处理和常用的流类,如FileReader、FileWriter、FileInputStream、FileOutputStream、OutputStreamWriter、InputStreamReader、BufferedReader、BufferedWriter等。此外,还介绍了系统流和标准流的使用。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 本文介绍了一个题目的解法,通过二分答案来解决问题,但困难在于如何进行检查。文章提供了一种逃逸方式,通过移动最慢的宿管来锁门时跑到更居中的位置,从而使所有合格的寝室都居中。文章还提到可以分开判断两边的情况,并使用前缀和的方式来求出在任意时刻能够到达宿管即将锁门的寝室的人数。最后,文章提到可以改成O(n)的直接枚举来解决问题。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
  • 本文整理了Java中java.lang.NoSuchMethodError.getMessage()方法的一些代码示例,展示了NoSuchMethodErr ... [详细]
author-avatar
井上英精_824
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有