📄 xstring.hpp
字号:
/** * @file xstring.hpp * @brief 字符串的包装,函数的声明 * @author 泥偶 * @since 2003-08-29 * @date 2004-08-28 */#ifndef XSTRING_HPP#define XSTRING_HPPextern "C"{ #include <sys/types.h> #include <regex.h>}#include <stdexcept>#include <string>#include <vector>/** * @namespace x * @brief eXtreme(极限) eXpress(急速)eXtend(扩展) */namespace x{ /// @brief 处理引号的方式 /// @see xstring::htmlspecialchars() enum QUOTE_STYLE { ENT_COMPAT, ///< 只转换双引号,不转换单引号 ENT_QUOTES, ///< 转换双引号和单引号 ENT_NOQUOTES ///< 不转换双引号和单引号 }; /// @brief 填补字符方式 /// @see xstring::str_pad() enum PAD_TYPE { PAD_RIGHT, ///< 右侧填补字符 PAD_LEFT, ///< 左侧填补字符 PAD_BOTH ///< 两侧填补字符 }; /** * @class xstring xstring.hpp "xstring.hpp" * @brief 字符串的包装 * @version 1.1.0 */ class xstring : public std::string { public: // 构造函数 /// @brief 默认构造函数,生成一个空字符串 xstring() : std::string() { } /// @brief 拷贝构造函数,生成str的一个复制品 xstring(const std::string& str) : std::string(str) { } /// @brief 将字符串str内“始于位置pos且长度最多n”的部分,当做字符串的初值 xstring( const std::string& str, size_type pos, size_type n = npos ) : std::string(str, pos, n) { } /// @brief 将C-string s当做字符串的初值 xstring(const char* s) : std::string(s) { } /// @brief 将C-string s的前n个字符作为字符串的初值 xstring(const char* s, size_type n) : std::string(s, n) { } /// @brief 生成一个字符串,包含n个c字符 xstring(size_type n, char c) : std::string(n, c) { } /// @brief 以区间[begin; end)内的字符作为字符串的初值 template<typename InputIterator> xstring(InputIterator begin, InputIterator end) : std::string(begin, end) { } /// @brief 拷贝构造函数,生成str的一个复制品 xstring(const xstring& str) : std::string(str) { } /// @brief 将字符串str内“始于位置pos且长度最多n”的部分,当做字符串的初值 xstring( const xstring& str, size_type pos, size_type n = npos ) : std::string(str, pos, n) { } /// @brief 从其它类型创建xstring的拷贝构造函数 template<typename T> explicit xstring(const T& v); /// @brief 构造函数,char重载版本 explicit xstring(char v) : std::string(1, v) { } /// @brief 构造函数,signed char重载版本 explicit xstring(signed char v) : std::string(1, v) { } /// @brief 构造函数,unsigned char重载版本 explicit xstring(unsigned char v) : std::string(1, v) { } /// @brief 将xstring型数据转换成其它类型 template<typename T> T to(void) const; /// @brief 返回字符串 inline xstring toString(void); /// @brief 返回字符串 inline const xstring& toString(void) const; // "ctype.h"上面的函数 /// @brief 返回转换成小写字母的字符串 xstring toLowerCase(void) const; /// @brief 返回转换成大写字母的字符串 xstring toUpperCase(void) const; /// @brief 判断字符串是否只包括数字或字母 bool isAlnum(void) const; /// @brief 判断字符串是否只包括字母 bool isAlpha(void) const; /// @brief 判断字符串是否只包括ASCII字符 bool isAscii(void) const; /// @brief 判断字符串是否只包括空白字符 bool isBlank(void) const; /// @brief 判断字符串是否只包括控制字符 bool isCntrl(void) const; /// @brief 判断字符串是否只包括数字 bool isDigit(void) const; /// @brief 判断字符串是否只包括可打印字符,不包括空格 bool isGraph(void) const; /// @brief 判断字符串是否只包括小写字母 bool isLower(void) const; /// @brief 判断字符串是否只包括可打印字符,包括空格 bool isPrint(void) const; /// @brief 判断字符串是否只包括除了空格和数字、字母之外的可打印字符 bool isPunct(void) const; /// @brief 判断字符串是否只包括空白字符 bool isSpace(void) const; /// @brief 判断字符串是否只包括大写字母 bool isUpper(void) const; /// @brief 判断字符串是否只包括16进制数字 bool isXdigit(void) const; /// @brief 判断字符串是否是电话号码 bool isPhone(void) const; /// @brief 判断字符串是否是电子邮件 // ^[_\.0-9a-zA-Z\-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,3}$ bool isEmail(void) const; /// @brief 判断字符串是否是主机名 bool isHostName(void) const; /// @brief 判断字符串是否是IP地址 bool isIpAddress(void) const; // JavaScript手册上面的函数 // HTML方法 /// @brief 给字符串添加@<a name=@>标签,返回字符串的一个副本 xstring anchor(const xstring& name) const; /// @brief 给字符串添加@<big@>标签,返回字符串的一个副本 xstring big(void) const; /// @brief 给字符串添加@<blink@>标签,返回字符串的一个副本 /// @deprecated 不推荐使用这个函数,@<blink@>标签在HTML 4中被废除 xstring blink(void) const; /// @brief 给字符串添加@<b@>标签,返回字符串的一个副本 xstring bold(void) const; /// @brief 给字符串添加@<tt@>标签,返回字符串的一个副本 xstring fixed(void) const; /// @brief 给字符串添加@<font color=@>标签,返回字符串的一个副本 /// @deprecated 不推荐使用这个函数,@<font@>标签在HTML 4中被废除 xstring fontcolor(const xstring& color) const; /// @brief 给字符串添加@<font size=@>标签,返回字符串的一个副本 /// @deprecated 不推荐使用这个函数,@<font@>标签在HTML 4中被废除 xstring fontsize(unsigned int size) const; /// @brief 给字符串添加@<i@>标签,返回字符串的一个副本 xstring italic(void) const; /// @brief 给字符串添加@<a href=@>标签,返回字符串的一个副本 xstring link(const xstring& url) const; /// @brief 给字符串添加@<small@>标签,返回字符串的一个副本 xstring small(void) const; /// @brief 给字符串添加@<strike@>标签,返回字符串的一个副本 xstring strike(void) const; /// @brief 给字符串添加@<sub@>标签,返回字符串的一个副本 xstring sub(void) const; /// @brief 给字符串添加@<sup@>标签,返回字符串的一个副本 xstring sup(void) const; // 泥偶增加的 /// @brief 给字符串添加@<h1@>...@<h6@>标签,返回字符串的一个副本 xstring heading(unsigned int level) const; /// @brief 给字符串添加@<u@>标签,返回字符串的一个副本 xstring underline(void) const; /// @brief 给字符串添加@<span style=@>标签,返回字符串的一个副本 xstring span(const xstring& style) const; // 忽略大小写字符串比较 /// @brief 把*this拿来和str进行比较,忽略大小写
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -