📄 tools.h
字号:
/***********************************************************************************
* 文 件 名: Tools.h
* 摘 要: 工具类名字空间,封装一些常用的函数
* 编 写: gotter@163.com
* 日 期: 2005-09-10
* 修 改:
* Copyright (c) 2004
*************************************************************************************/
#if !defined(AFX_Tools_H__C74B5F0D_E1BC_4446_BCC7_2CFA6BF92EFC__INCLUDED_)
#define AFX_Tools_H__C74B5F0D_E1BC_4446_BCC7_2CFA6BF92EFC__INCLUDED_
#include "Public.h"
namespace Tools
{
/*********************************************************************************
*功能: 去掉字符串pszBuf前后chTag(缺省为' ')字符
*输入: pszBuf--源字符串缓冲区
*输出: pszBuf--目标缓冲区
*返回: pszBuf
*********************************************************************************/
char *Trim(char *pszBuf,char chTag=' ');
/*********************************************************************************
*功能: 将源字符串pszSrc拷贝到目标缓冲区pszDst,并去掉目标字符串的前后chTag
*输入: pszBuf--源字符串缓冲区
*输出: pszDst--目标缓冲区
*返回: pszDst
*********************************************************************************/
char *TrimCopy(char *pszDst,const char *pszSrc,char chTag=' ');
/*********************************************************************************
*功能: 拷贝包含在startTag和endTag之间的不包含前后空格的子串
*输入: szDst--目标缓冲区,iDstSize--目标缓冲区大小,szSrc--源字符串
* szStartTag--要查找的开始字符串标记
* szEndTag--要查找的结束字符串标记
*输出: szDst--目标缓冲区
*返回: 如果失败,返回NULL,否则返回pszDst
*********************************************************************************/
char *StrCopyByTag(char *pszDst,
int iDstSize,
const char *pszSrc,
const char *pszStartTag,
const char *pszEndTag);
/*********************************************************************************
*功能: 一次创建多级目录
*输入: pszDir-- 目录字符串
* iMode -- 目录访问权限
*输出: 无
*返回: true--成功 false--失败
*********************************************************************************/
bool CreateDirs(const char *pszDir,int iMode);
/*********************************************************************************
*功能: 判断sSub是否是pSrc的开始串,不区分大小写
*输入: pSrc--源缓冲区,szSub--用于比较的字符串
*输出: 无
*返回: true--成功 false--失败
*********************************************************************************/
bool IStartWith(const void *pSrc,const char *szSub);
/*********************************************************************************
*功能: 将相对路径的URL转为绝对路径的URL
*输入: szDstUrl--目标缓冲区,
* iDstSize--目标缓冲区大小
* szSrcUrl--源绝对路径URL,类似于"/","/home/gotter"
* szSrcUrl应该以'/'开头,结尾不要有'/',除非表示根目录
* szRelUrl--用于转换的相对路径URL,可以有如下类型:
* "/","/home/gotter","home","home/gotter","../../gotter"
*输出: szDstUrl--目标缓冲区
*返回: 目标缓冲区,==NULL表示失败
*********************************************************************************/
char *UrlRelToAbs(char *pszDstUrl,
int iDstSize,
const char *pszSrcUrl,
const char *pszRelUrl);
/*********************************************************************************
*功能: 将szSrc中包含的所有szSubOld字符串转换成szSubNew,
*输入: szSrc--需要转换的源字符串
* szSubOld--将被替换的旧字符串
* szSubNew--将替换成的新字符串
*输出: 无
*返回: 如果szSrc中发现szSubOld,返回被替换后的新字符串,新字符串是
* 在堆分配,使用完后务必delete []!,如果没发现,返回NULL.
*********************************************************************************/
char *ReplaceAll(const char *szSrc,
const char *szSubOld,
const char *szSubNew);
/*********************************************************************************
*功能: 将URL串中的不安全字符编码,现只处理空格情况,假如转换后的URL
* 长度超过nSrcSize-1,则只保留nSrcSize-1长的URL
*输入: szUrl--需要编码的URL
* nUrlSize--szUrl缓冲区大小
*输出: 无
*返回: szUrl
*********************************************************************************/
char *UrlEncode(char *szUrl,unsigned nUrlSize);
/*********************************************************************************
*功能: 将数据进行BASE64编码
*输入: pSrc--源缓冲区,nSrcLen--源缓冲区长度
* nMaxLineLen--编码后每行的最大长度
*输出: pDst--编码后的目标字符串
*返回: 目标字符串长度
*********************************************************************************/
int Base64Encode(char* pDst,
const unsigned char* pSrc,
int nSrcLen,
int nMaxLineLen);
/*********************************************************************************
*功能: 将BASE64编码数据进行解码
*输入: pSrc--源缓冲区,nSrcLen--源缓冲区长度
*输出: pDst--解码后的目标缓冲区
*返回: 目标缓冲区长度
*********************************************************************************/
int Base64Decode(unsigned char* pDst,
const char* pSrc,
int nSrcLen);
/*********************************************************************************
*功能: 判断文件是否存在
*输入: pszFile--文件名
*输出: 无
*返回: 真--存在 假--不存在
*********************************************************************************/
bool IsFile(const char *pszFile);
/*********************************************************************************
*功能: 判断目录是否存在
*输入: pszDir --目录名
*输出: 无
*返回: 真--存在 假--不存在
*********************************************************************************/
bool IsDir(const char *pszDir);
/*********************************************************************************
*功能: 获取文件大小
*输入: pszFile --文件名
*输出: 无
*返回: 成功则返回大于或等于0的值,失败返回负值
*********************************************************************************/
int GetFileSize(const char *pszFile);
/*********************************************************************************
*功能: 将一个字节转换成十六进制字符串
*输入: cSrc --要转换的字节
*输出: pszHex --转换后的字符串,两个字符,一个结束符
*返回: 无
*********************************************************************************/
void Char2HexStr(char *pszHex,char cSrc);
/*********************************************************************************
*功能: 往当前目录的log.txt文件中写入一行日志,如果文件不存在
* 则首先创建文件
*输入: pszFormat--格式化的字符串,末尾不需要加入换行符
* 其它后续 --与pszFormat匹配的参数
*输出: 无
*返回: 真--成功 假--失败
*********************************************************************************/
bool Log(const char *pszFormat,...);
/*********************************************************************************
*功能: 功能同Log,只是日志文件由第一个参数pszFile指定
*输入:pszFile --要写入的日志文件名
* pszFormat--格式化的字符串,末尾不需要加入换行符
* 其它后续 --与pszFormat匹配的参数
*输出: 无
*返回: 真--成功 假--失败
*********************************************************************************/
bool LogFile(const char *pszFile,const char *pszFormat,...);
/*********************************************************************************
*功能: 将pAddr指向的内存以十六进制的方式记录在日志文件Log.txt中
*输入:pAddr --要读取的内存的首地址
* iSize --要读取的内存大小,字节表示
* pszInfo --其他附加信息
*输出: 无
*返回: 真--成功 假--失败
*********************************************************************************/
bool LogMem(void *pAddr,int iSize,const char *pszInfo="");
/*********************************************************************************
*功能: 从文件流pStream中读取一行字符串,支持每行字符个数小于1024的配置文件
*输入:pszBuf --接收缓冲区
* iSize --缓冲区的大小,如果文件流中的某一行长度大于iSize-1,
* 则该行剩下的字符将被此次ReadLine读取并扔弃掉。
* pStream --文件流,必须有可读的属性
* bKeepLineSymbol --是否保留行尾的换行符号(回车符号无条件扔弃掉)
*输出: 无
*返回: 大于0表示实际读取的字符个数,==0表示文件结束,小于0出错
*********************************************************************************/
int ReadLine(char *pszBuf,int iSize,FILE *pStream,bool bKeepLineSymbol=false);
char *ReadConfig(const char *pszName,const char *pszValDef,
char *pszVal,int iSize,const char *pszFile);
bool WriteConfig(const char *pszName,const char *pszVal,const char *pszFile);
//调试用函数
void MemDump(const void *pVoid, int iSize,const char *pszInfo=NULL);
//调试用函数
void MemDump(const string &sVal,const char *pszInfo=NULL);
bool IsEmpty(const char *pszVal);
};
using namespace Tools;
#endif //!defined(AFX_Tools_H__C74B5F0D_E1BC_4446_BCC7_2CFA6BF92EFC__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -