📄 jstrings_hh.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 + -