⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jstrings_hh.h

📁 单片机宏汇编器的源程序。给一些爱好者作为学习编译原理和 C 程序设计的例子.
💻 H
字号:
//---------------------------------------------------------------------------
//  JStrings_H.h
//---------------------------------------------------------------------------
#ifndef	JStrings_H.h  // 防止被重复引用
#define JStrings_H.h
//---------------------------------------------------------------------------
#include <stdlib.h>

#include "Zstring_H.h"
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
// 一个增强的字串类。
//---------------------------------------------------------------------------
class JStrings : public Zstring
{ public:
   // -------- constructor ---------------

    // 构造器 Example: JStrings obj_a;
    JStrings():Zstring() {} // end constructor

    // 构造器 Example: JStrings obj_a(str);
    JStrings(const char* str):Zstring(str) {}

    // 构造器 Example: JStrings obj_a(obj_b);
    JStrings(const JStrings& obj):Zstring(obj) {}

    // 构造器 Example: JStrings obj_a(str,len);
    JStrings(const char* str, const SizeType len):Zstring(str,len) {}

    // 构造器 用字符ch填满整个字串。Example: obj_a('.',10);
    JStrings(const char ch, const SizeType len):Zstring(ch,len) {}

    // 析构器 -使用基类的析构器,所以不在这里重新定义。

   // -------- public functions ----------

    // ------- 圆括号运算 --------

    // 慎用。 Example:   const char* str = obj();
    const char* operator()(void)const   { return (const char*)p; }

    // 把Zstring对象转换成JStrings对象。
    // Example: JStrings_obj(Zstring_obj).ToDown();
    JStrings& operator()(const Zstring& obj)const
     { return (JStrings&) obj; }

    // 取子串对象中的子串。x为子串开始的下标(缺省为零), len为子串的长度。
    // Example:  obj2 = obj1(5,2);
    JStrings operator()(SizeType len, SizeType x = 0)const
     { return *(JStrings*)& Zstring::operator()(len, x); }

    // ------- 赋值运算 ---------

    // 赋值运算符。Example: obj_a = s;
    const JStrings& operator=(const char* s)
      { return (const JStrings&)Zstring::operator=(s); }

    // 赋值运算符。Example: obj_a = obj_b;
    const JStrings& operator=(const JStrings& obj)
      { return (const JStrings&)Zstring::operator=(obj); }

    const JStrings& operator+=(const char* s)
      { return *this = * this + s; }

    const JStrings& operator+=(const JStrings& obj)
      { return *this = * this + obj; }

   // ------- 加法运算 --------

    // 字串加法运算符。Example: obj_b = obj_a + s;
    JStrings operator+(const char* s)const
      { return *(JStrings*)& Zstring::operator+(s); }

    // 字串加法运算符。Example: obj_c = obj_a + obj_b;
    JStrings operator+(const JStrings& obj)const
      { return *(JStrings*)& Zstring::operator+((const Zstring&)obj); }

    // 字串加法运算符。Example: obj_b = s + obj_a;
    friend JStrings operator+(const char* s, const JStrings& obj);

  // -------- something special ---------------

    // 返回字串的第二个字符。注意下标不要越界!
    char SecondChar()const        { return p[1]; }

    // p字串自己改变为全大写。
    void ToUp()                   { strupr(p); }

    // p字串自己改变为全小写。
    void ToDown()                 { strlwr(p); }

    // 生成一个除去首字符的字符串。p字串自己不改变。
   //const char* DelHead()const     { return size>1 ? p+1 : NULL; }

    // 删除字串的第一个字符,p字串自己改变。
    void DelHead();

    // 删除字串的最后一个字符,p字串自己改变。
    void DelTail();

    // 判断第一个字符是否为数字。p不能为空。
    bool FirstCharDigit()const    { return (*p >= '0' && *p <= '9'); }

    // 判断字符串是否为数值串, 是则返回X进制值。
    // 否则返回零。( 0, 2, 8, 10, 16 )
   int8u IsValueStr();

    // 把字符串转换为32位的整数。
    // 注意,p字串必须是数串!!!不包含'H','O','B'等。
  int32u TransToint32u(int8u radix);

    // 如果是数串,输出它的值到value。
    // 如果不是数字串,返回0; 如果是数串,返回非零值
   int8u ValueStrToValue(int32u &value);  // value 带值返回。

    // 把其中的'$'号去掉。
    void dollarCat();       // 只用于ValueStrToValue()内部。

    // 判断字串是否数字串,是则显示出相应的信息。否则什么都不做。
    void TellmeStrtype();   // ( for Debug )

  // --------------------------------------

    // 把字串中的某个字符删除,注意,f指向的字符就是所删字符,它必须在字串里!
    void DelCharInStr(char* f);       // 此函数要慎用!

    // 用字串中的字串替换本身。注意,f指向的就是新串,它必须在字串里!
    void ReplaceBySubstr(char* f);    // 此函数要慎用!

    // 将字串首尾的空格去除。
    void NoBlankInStr();              // 只供特别用途。

    // 将字串首尾的字符ch去除(如果ch存在的话)。
    void Trim(char ch);               // 只供特别用途。

}; // end class JStrings
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------
//
//                        下面是实现部分。
//
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
// 删除字串的第一个字符,p字串自己改变。
//---------------------------------------------------------------------------
inline void JStrings::DelHead()
{ DelCharInStr(p);
} // end DelHead
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
// p字串自己改变。删除字串最后一个字符。
//---------------------------------------------------------------------------
inline void JStrings::DelTail()
{ if( size > 1 ) { --size; p[size-1] = '\0'; } // endif
} // end DelTail
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
// 把字符串转换为32位的整数。
// 注意,p字串必须是数串!!!不包含'H','O','B'等。
//---------------------------------------------------------------------------
inline int32u JStrings::TransToint32u(int8u radix)
{ register char* endptr;
  return strtoul(p, &endptr, radix);
} // end TransHexToint32u
//---------------------------------------------------------------------------



//------ Friend Function operator+ ------------------------------------------
//    str + obj_b = obj_c
//---------------------------------------------------------------------------
inline JStrings operator+(const char *s, const JStrings& obj)
{ return *(JStrings*)& operator+(s,(const Zstring&)obj);
} // end friend operator+
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
#endif
//---------------------------------------------------------------------------
//               Written by JamesyFront.    ZLGmcu Dev.Co.Ltd.  2002.
//---------------------------------------------------------------------------







⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -