【C/C++19】_public.h,_public.cpp,_cmpublic.h
发布日期:2021-04-30 21:02:07
浏览次数:136
分类:精选文章
本文共 8245 字,大约阅读时间需要 27 分钟。
C语言高级编程参考手册
1. 公共头文件
1.1 _public.h
#ifndef _PUBLIC_H#define _PUBLIC_H#include "_cmpublic.h"// 文件信息结构体struct st_fileinfo { char filename[301]; int filesize; char mtime[21];};// 目录类class CDir {public: char m_DirName[301]; char m_FileName[301]; char m_FullFileName[301]; int m_FileSize; char m_ModifyTime[21]; char m_CreateTime[21]; char m_AccessTime[21]; int m_uPOS; vector m_vFileName; CDir(); void initdata(); void SetDateFMT(const char* in_DateFMT); // 打开目录 bool OpenDir(const char* in_DirName, const char* in_MatchStr, unsigned int in_MaxCount = 10000, bool bAndChild = false, bool bSort = false); // 递归打开目录 bool _OpenDir(const char* in_DirName, const char* in_MatchStr, unsigned int in_MaxCount, bool bAndChild); // 逐个读取目录中的文件信息 bool ReadDir(); // 获取文件信息 ~CDir();};// 文件操作类class CFile {private: FILE* m_fp; bool m_bEnBuffer; char m_filename[301]; char m_filenametmp[301];public: CFile(); ~CFile(); bool IsOpened(); bool Open(const char* filename, const char* openmode, bool bEnBuffer = true); bool CloseAndRemove(); bool OpenForRename(const char* filename, const char* openmode, bool bEnBuffer = true); bool CloseAndRename(); void Fprintf(const char* fmt, ...); bool Fgets(char* strBuffer, const int ReadSize, bool bDelCRT = false); bool FFGETS(const FILE* fp, char* strBuffer, const int ReadSize, const char* strEndStr = 0); size_t Fread(void* ptr, size_t size); size_t Fwrite(const void* ptr, size_t size); ~CFile();};// 字符串操作类class CCmdStr {public: vector m_vCmdStr; CCmdStr(); void SplitToCmd(const string in_string, const char* in_sep, bool bdeletespace = true); int CmdCount(); bool GetValue(const int inum, char* in_return); bool GetValue(const int inum, char* in_return, const int in_len); bool GetValue(const int inum, int* in_return); bool GetValue(const int inum, long* in_return); bool GetValue(const int inum, double* in_return); ~CCmdStr();};// 时间操作类class CTimer {public: struct timeval m_start; struct timeval m_end; CTimer(); void Start(); double Elapsed();};// 日志文件操作类class CLogFile {public: FILE* m_tracefp; char m_filename[301]; char m_openmode[11]; bool m_bBackup; bool m_bEnBuffer; CLogFile(); ~CLogFile(); bool Open(const char* in_filename, const char* in_openmode, bool bBackup = true, bool bEnBuffer = false); bool BackupLogFile(); bool Write(const char* fmt, ...); bool WriteEx(const char* fmt, ...); void Close();};// XML操作类class CXmlBuffer {public: bool GetXmlBuffer(const char* in_xmlBuffer, const char* in_fieldName, char* out_value, const int in_len = 0); bool GetXmlBuffer(const char* in_xmlBuffer, const char* in_fieldName, bool* out_value); bool GetXmlBuffer(const char* in_xmlBuffer, const char* in_fieldName, int* out_value); bool GetXmlBuffer(const char* in_xmlBuffer, const char* in_fieldName, unsigned int* out_value); bool GetXmlBuffer(const char* in_xmlBuffer, const char* in_fieldName, long* out_value); bool GetXmlBuffer(const char* in_xmlBuffer, const char* in_fieldName, unsigned long* out_value); bool GetXmlBuffer(const char* in_xmlBuffer, const char* in_fieldName, double* out_value);};// 网络通信类class CTcpClient {public: int m_sockfd; char m_ip[21]; int m_port; bool m_btimeout; int m_buflen; CTcpClient(); bool ConnectToServer(const char* ip, int port); bool Read(char* buffer, const int itimeout = 0); bool Write(const char* buffer, const int ibuflen = 0); void Close();};// TCP服务器类class CTcpServer {public: int m_listenfd; int m_connfd; bool m_btimeout; int m_buflen; CTcpServer(); bool InitServer(unsigned int port); bool Accept(); char* GetIP(); bool Read(char* buffer, const int itimeout = 0); bool Write(const char* buffer, const int ibuflen = 0); void CloseListen(); void CloseClient();};// 其他常用函数#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #endif 2. _public.cpp
#include "_public.h"// 常用函数实现int SNPRINTF(char* str, size_t size, const char* fmt, ...) { memset(str, 0, size + 1); va_list arg; va_start(arg, fmt); vsnprintf(str, size, fmt, arg); va_end(arg);}char* STRCPY(char* dest, const size_t destlen, const char* src) { if (strlen(src) > destlen) { strncpy(dest, src, destlen); } else { strcpy(dest, src); } return dest;}char* STRNCPY(char* dest, const size_t destlen, const char* src, size_t n) { if (n > destlen) { strncpy(dest, src, destlen); } else { strncpy(dest, src, n); } return dest;}char* STRCAT(char* dest, const size_t destlen, const char* src) { if (strlen(dest) >= destlen) { memset(dest + strlen(dest), 0, destlen - strlen(dest) + 1); } int left = destlen - strlen(dest); int len = (strlen(src) > left) ? left : strlen(src); strncat(dest, src, len); return dest;}char* STRNCAT(char* dest, const size_t destlen, const char* src, size_t n) { int left = destlen - strlen(dest); int len = (n > left) ? left : n; strncat(dest, src, len); return dest;}// 时间转换函数int timetostr(const time_t ti, char* strtime) { struct tm* sttm; if ((sttm = localtime(&ti)) == 0) { return -1; } sprintf(strtime, "%d-%02d-%02d %02d:%02d:%02d", sttm->tm_year + 1900, sttm->tm_mon + 1, sttm->tm_mday, sttm->tm_hour, sttm->tm_min, sttm->tm_sec); return 0;}int strtotime(const char* strtime, time_t* ti) { char temp[11]; strncpy(temp, strtime, 4); sttm.tm_year = atoi(temp) - 1900; strncpy(temp, strtime + 5, 2); sttm.tm_mon = atoi(temp) - 1; strncpy(temp, strtime + 8, 2); sttm.tm_mday = atoi(temp); strncpy(temp, strtime + 11, 2); sttm.tm_hour = atoi(temp); strncpy(temp, strtime + 14, 2); sttm.tm_min = atoi(temp); strncpy(temp, strtime + 17, 2); sttm.tm_sec = atoi(temp); *ti = mktime(&sttm); return *ti;}// 文件操作bool CFile::IsOpened() { return m_fp != 0;}bool CFile::Close() { if (m_fp == 0) return; fclose(m_fp); m_fp = 0; if (!m_filenametmp.empty()) { remove(m_filenametmp); } memset(m_filename, 0, sizeof(m_filename)); memset(m_filenametmp, 0, sizeof(m_filenametmp));}bool CFile::CloseAndRemove() { if (m_fp == 0) return true; fclose(m_fp); m_fp = 0; if (remove(m_filename) != 0) { memset(m_filename, 0, sizeof(m_filename)); return false; } memset(m_filename, 0, sizeof(m_filename)); return true;}bool CFile::Open(const char* filename, const char* openmode, bool bEnBuffer) { Close(); m_fp = fopen(filename, openmode); if (m_fp == 0) return false; m_bEnBuffer = bEnBuffer; strncpy(m_filename, filename, 300); return true;}// 其他类和函数可在此扩展 3. _cmpublic.h
#ifndef _cmpublic_H#define _cmpublic_H#include#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include
#include #include #include #include #include // 定义 bool 数据类型#ifndef BOOL#define BOOL unsigned char#endif#ifndef bool#define bool unsigned char#endif#ifndef TRUE#define TRUE 1#endif#ifndef true#define true 1#endif#ifndef FALSE#define FALSE 0#endif#ifndef false#define false 0#endif// 其他标准库#include #include #include #include #include #include #include #include #include #include #endif
以上为代码中的一部分,完整的代码库包含了大量功能性类和常用函数的实现,可根据实际需求进行扩展和修改。
发表评论
最新留言
感谢大佬
[***.8.128.20]2026年05月30日 23时50分19秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PHP对表单提交特殊字符的过滤和处理
2023-03-01
php对象引用和析构函数的关系
2023-03-01
RabbitMQ HTTP 认证后端项目常见问题解决方案
2023-03-01
PHP将图片转换成base64格式(优缺点)
2023-03-01
php将多个值的数组去除重复元素
2023-03-01
php局域网上传文件_PHP如何通过CURL上传文件
2023-03-01
PHP工具插件大全
2023-03-01
php布尔值的++
2023-03-01
PHP常量、变量作用域详解(一)
2023-03-01
PHP应用目录结构设计
2023-03-01
PHP应用程序连接MSQL数据库Demo(附crud程序)
2023-03-01
PHP应用程序连接Oracle数据库Demo(附Oracle客户端安装文件)
2023-03-01
PHP开发api接口安全验证
2023-03-01
PHP开发规范PSR
2023-03-01
PHP开发遇到错误0001
2023-03-01
php异常处理
2023-03-01
PHP引入了泛型和集合两大重要特性,大大改善 PHP 代码的可维护性和可读性
2023-03-01
PHP引擎php.ini参数优化
2023-03-01
PHP引用(&)使用详解
2023-03-01
php引用及垃圾回收
2023-03-01