无忧资源站

 找回密码
 加入我们
查看: 2215|回复: 0

[C/C++] C/C++应用层字符串操作类源码例子

[复制链接]

56

主题

58

帖子

1058

积分

无忧资源站

Rank: 9Rank: 9Rank: 9

积分
1058

钻石用户勤劳达人超级萌主武林秘籍实例会员悬赏达人滴水穿石皇冠会员退伍军人铂金会员暗号达人打卡达人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理站点元老

QQ
发表于 2022-12-6 03:37:41 | 显示全部楼层 |阅读模式
自己使用的字符串类,在对于对字符串操作没有如鱼得水感觉的同学可以有直接的帮助,源码对常用字符串操作进行了类封装,可以很轻松的操作各种字符,优点是占用小,效率高,不包含任何扩展库文件,纯算法构造等,编译体积也显著缩减。

头文件:WYString.h,
源文件:WYString.cpp

  1. class WYString
  2. {
  3.         int M_NumberToStr(long long _number, char str[]);
  4.         void Init(int _length);
  5.         int M_GetLength(const char* _str);                                                                //public:int GetLength();依赖(带终止符)
  6.         int Align(const int _sourceNumber, int _align = MEMORY_ALIGN);        //内存对齐,返回对齐后长度
  7. private:
  8.         char* M_str;
  9.         int M_Memorylength;
  10.         int M_length;

  11. public:
  12.         WYString();
  13.         ~WYString();
  14.         WYString(WYString& _str);                                                                                //同类构造
  15.         WYString(const char* _str);                                                                                //ansic构造                (例如:WYString str = "ansi测试")                或(WYString str("ansi测试"))
  16.         WYString(const wchar_t* _str);                                                                        //UNICODE构造        (例如:WYString str = L"测试宽字节")        或
  17.         WYString(const long long& _str);                                                                //数字构造                (例如:WYString str = 2518762)                或
  18.         bool SetMemoryLength(const long _newLength);                                        //重新设置缓冲区大小,成功返回true
  19.         void SetBuffer(const WYString& _str);                                                        //重置数据,也可以直接使用 = 符号赋值
  20.         int GetMemorylength();                                                                                        //返回当前内存占用长度
  21.         WYString operator [] (const int _index);                                                //从指定位置起,取剩余所有字符串数据(例如:WYString str = "ansi测试";str[2];结果等于:nsi测试)
  22.         WYString& operator = (const WYString& _str);
  23.         WYString& operator << (const WYString& _str);
  24.         WYString& operator + (const WYString& _str);
  25.         WYString& operator += (const WYString& _str);
  26.         friend bool operator == (const WYString& _str1, const WYString& _str2);
  27.         const char* operator*(void);
  28.         /*
  29.                 数字字符串转数字->可统一使用GetNumber()
  30.         */
  31.         explicit operator int();
  32.         explicit operator unsigned long();
  33.         explicit operator long long();
  34.         explicit operator unsigned long long();

  35. public:
  36.         bool Out(const char* _str = nullptr);                                                //扩展-》便捷打印函数-》可在任何Winows应用程序中输出CMD文本。留空默认打印本对象文本
  37.         int PopMsg(const char* _str = nullptr, const char* _title = "提示", const int _icon = 0x40L, HWND _hwnd = nullptr);//扩展-》以信息框的形式显示本对象文本
  38.         long long GetNumber();                                                                                //本类数据转为数字返回,遇非数字0~9后返回
  39.         const char* GetBuffer();                                                                        //获取ansic数据指针
  40.         int GetLength();                                                                                        //返回本对象ansic字符长度,不带终止符
  41.         int GetLength(const char* _str);                                                        //扩展-》获取外部输入ansic字符长度,不带终止符
  42.         int GetBufferW(wchar_t* _buffer);                                                        //返回实际写入输出缓冲区的字节数,请确保输入缓冲区够大,可以使用GetLengthW()获取宽字节数据长度
  43.         int GetLengthW();                                                                                        //返回本对象宽字符带终止符长度
  44.         int GetLength(const wchar_t* _str);                                                        //扩展-》获取输入宽字符长度,带终止符
  45.         int Find(const char* _str);                                                                        //从头部(0)开始寻找指定文本,找到返回首个文本所在位置,没找到返回-1
  46.         int Find(const char* _str, int _start);                                                //从指定位置开始寻找指定文本,找到返回首个文本所在位置,没找到返回-1
  47.         int ReverseFind(const char* _str);                                                        //从末尾倒序开始寻找指定文本,找到返回顺序的首个文本所在位置,没找到返回-1
  48.         int ForwardFind(const char _cs, int _start = 0);                        //从头部0开始寻找一个字符,找到返回顺序的首个字符所在位置,没找到返回-1。
  49.         int ReverseFind(const char _cs);                                                        //从末尾倒序开始寻找一个字符,找到返回顺序的首个字符所在位置,没找到返回-1
  50.         const char Getbyte(int _start);                                                                //从头开始取指定位置字符一个字符,找到返回取回的字符,越界返回带符号 -1
  51.         WYString Left(int _length);                                                                        //WYString 取左边文本(取出长度),取出文本需要接收
  52.         WYString Right(int _length);                                                                //WYString 取右边文本(取出长度),取出文本需要接收
  53.         WYString Mid(int _startPos, int _endPos);                                        //WYString 取中间文本(起始位置,结束位置),取出文本需要接收
  54.         WYString operator()(const int _start, const int _length);        //取中间文本(例如:(WYString str = 12345;str[0起始位置,5长度];//将返回12345)失败返回“”,取出文本需要接收
  55.         WYString Mid(const char* _lStr, const char* _rStr);                        //WYString 取中间文本(左边文本,右边文本),取出文本需要接收
  56.         WYString& Trim();                                                                                        //WYString& 删除本对象首位空白(),可接收返回新数据,也可不接受,因为是对当前数据进行了更新
  57.         WYString& TrimAll();                                                                                //WYString& 删除本对象全部空白文本(),可接收返回新数据,也可不接受,因为是对当前数据进行了更新
  58.         WYString& TrimLeft();                                                                                //删除本对象左边所有空白字符,可接收返回新数据,也可不接受,因为是对当前数据进行了更新
  59.         WYString& TrimRight();                                                                                //删除本对象尾部所有空白字符,可接收返回新数据,也可不接受,因为是对当前数据进行了更新
  60.         int FindAppearCount(const char* _text, int* _pos = nullptr);//查找指定文本出现的总次数,参数2(默认 NULL)是否返回每个所在位置,可以GetLength()确定缓存大小
  61.         int Replace(const char* _sc, const char* _cNew);                        //int Replace(欲替换的文本, 新文本),替换指定文本,返回已经替换成功的个数,没有替换任何文本返回0
  62.         int Remove(const char* _text);                                                                //在实例中删除所有指定的文本,返回删除的个数,如果未改变 返回 0
  63.         WYString& MakeUpper();                                                                                //将WYString对象所有字母转换为大写字符。返回数据可接可不接
  64.         WYString& MakeLower();                                                                                //将WYString对象所有字母转换为小写字符。返回数据可接可不接
  65.         int Delete(const int _index, const int _count = 1);                        //删除字符串中的一个或多个字符,从给定索引处的字符开始删除,默认为 1 (宽字符需要注意 是 2字节),返回删除后的字符串的新长度。无改变返回0。越界返回 -1
  66.         int Insert(const int _index, const char* _text);                        //在字符串中的给定索引处插入单个字符或字符串。越界返回 -1
  67. };
复制代码





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入我们

x

无忧资源专区所有资源均由管理员核实测试后发布,均可放心下载!

QQ|SiteMap|Map|小黑屋|无忧资源站

GMT+8, 2024-5-19 17:57 , Processed in 0.072418 second(s), 22 queries .

无忧资源站

Copyright © 2022-2032 www.wyzyz.net

快速回复 返回顶部 返回列表