
C++
文章平均质量分 63
huang714
不断的学习,充实自己。
展开
-
反序函数 C++
int __fastcall fun_antitone(int input){ int i = input; //定义一个12345的整数 int temp=0;//temp作为存储的值 while(i!=0){ temp = temp*10 + i%10; i/=10; } //反序取出来 return temp;}...原创 2022-01-28 09:30:58 · 1501 阅读 · 0 评论 -
C++读取配置文件代码
在一般项目中经常会用到配置文件配置一些系统参数,比如网关的端口号、memcache、redis等配置参数,数据库的ip地址、端口号、用户名密码等。 在java中有properties文件读取类。 c++中有ini的读取实现,注册表的读取实现,普通文件读取等实现, 我们项目中使用的类似ini配置文件,支持分区配置参数。配置文件如下:实现代码实现如下:configure.h#ifndef GW_CONFIGURE_H_#define GW_CONFIGURE_H_#inc..原创 2020-09-29 08:47:01 · 1700 阅读 · 0 评论 -
C++ 怎样让函数返回数组
这个问题属于非常初级的问题,但是对于初学不知道的人可能会比较头疼。C++ 中函数是不能直接返回一个数组的,但是数组其实就是指针,所以可以让函数返回指针来实现。比如一个矩阵相乘的函数,很容易地我们就写成:实例#include <iostream>usingnamespacestd;float*MultMatrix(floatA[4],floatB[4]){ floatM[4]; M[0]=A[0]*B[0]+A[1]*B[2]; M[1]...原创 2020-10-16 10:36:54 · 627 阅读 · 0 评论 -
C++ 的关键字(保留字)完整介绍
1. asmasm (指令字符串):允许在 C++ 程序中嵌入汇编代码。2. autoauto(自动,automatic)是存储类型标识符,表明变量"自动"具有本地范围,块范围的变量声明(如for循环体内的变量声明)默认为auto存储类型。3. boolbool(布尔)类型,C++ 中的基本数据结构,其值可选为 true(真)或者 false(假)。C++ 中的 bool 类型可以和 int 混用,具体来说就是 0 代表 false,非 0 代表 true。bool 类型常用于条件判..原创 2020-10-16 10:33:02 · 486 阅读 · 0 评论 -
获取本机内网、外网ip(C++)
基础知识电脑在局域网内,通过网关/路由器连接到Internet则ip分为内网ip、外网ip。通过ipconfig得到的为局域网ip。 电脑直接拨号连接等,则本机通过ipconfig得到的就是外网ip。代码//Get IPint GetLocalIP(std::string &local_ip);int GetInternetIP(std::string &Inernet_ip);int GetLocalIP( std::string &local...原创 2020-11-06 09:00:45 · 2004 阅读 · 0 评论 -
C/C++格式化日志库实现代码
头文件如下:/*****************************************************//* 跨平台日志函数,Linux下与windows下亲测有效 *//*****************************************************/#ifndef _LOG_FORMAT_H_#define _LOG_FORMAT_H_// 日志等级enum LogLevel { _LOG_T...原创 2020-11-06 09:09:51 · 269 阅读 · 0 评论 -
C++多线程SOCKET通信研究日志
C++多线程SOCKET通信研究日志近期在研究C++程序,基本思路:作为服务接受监听4500端口,当存在一个连接时,创建一个新的线程,并在线程中实现数据的接受和发送工作,为了避免因收发造成的阻塞,可以创建2个线程用于收和发送。思路2:通过选择的模式进行数据匹配发送数据,发一次关一次。暂定思路,以下代码并不完整,仅供本人研究#include <winsock2.h>#pragma comment(lib,"ws2_32")#include <stdio.h>#inc原创 2020-11-06 09:12:19 · 314 阅读 · 0 评论 -
C++ 写日志文件
C++ 写日志文件//在指定文件路径写入指定信息,unicode版本 void CLog::WriteLog(const wchar_t* filePath, const wchar_t* text) { //首先判断文件是否存在,如果不存在则创建,并在开头加入0xfeff;如果存在则直接写入 if (_waccess(filePath, 0) == -1) { FILE* fp; _wfopen_s(&fp, filePath, L"wb"); if (f原创 2020-11-06 09:23:26 · 849 阅读 · 0 评论 -
一个简单的c++写日志类
在开发当中有的直接调试很方便,有的就不太好调试,所以我经常使用写日志以及输出Debug信息来进行开发。尽管我比较喜欢使用以输出Debug的信息的方式来跟踪程序。因为直接一句话: OutputDebugString("你想输出的信息\r\n"); 就可以在非调试模式下直接在DebugView上面显示输出信息了。但是除了这种方式之外有时侯我也会使用写日志的方式来输出调试信息,虽然写文件很简单,但还是记录一下吧。方便自己同时也可能方便需要的人吧。首先是main()函数定义:.原创 2020-11-06 08:59:42 · 484 阅读 · 0 评论 -
c++ 多线程写日志的一个很实用的日志类源码(支持 c++ builder)
c++ 多线程写日志的一个很实用的日志类源码(支持 c++ builder)1.日志基类.h文件//---------------------------------------------------------------------------#ifndef UnitLogWriterH#define UnitLogWriterH#include <vcl.h>#include <time.h>#include <assert.h>//.原创 2020-11-06 09:15:43 · 1017 阅读 · 0 评论 -
TCP总结
TCP总结TCP这些东西,基本每个程序猿都或多或少是掌握的了。虽然感觉在实际开发中没有什么用武之处,但,面试他要问啊而最近大家伙过完年,也都在准备春招,我也一样。阅读了一些okHttp源码之后,又屁颠屁颠地跑回来重新把tcp、http这些东西给重新学了一遍。okHttp基本都是这些协议的实现,而理解源码的基础是,理解tcp、http。重新看了一遍tcp之后,我把这些东西给总结了下来,也就有了这...原创 2021-09-22 09:27:48 · 343 阅读 · 0 评论 -
C/C++后台研发需要点亮(学习路线规划)
C/C++后台研发需要点亮(学习路线规划)虽然是C/C++后台研发开发,但按我的经验,后台开发中更多的是C++,至少接触到的后台开发都是如此,既然是C/C++后台开发,那要点的技能树其实从名字就能看出来,概况起来主要就是两个方面:1. C/C++语言2. 后台开发技术C/C++ 编程语言的学习,在 C++ 后台研发中只占了很小一的部分比例,编程语言只是一个工具,开发人员会使用工具是最低的要求,以我从事后台开发的经验来看,当前符合大部分公司后台岗位要求的技能树,大致是下面这个样子,我画了.原创 2021-01-11 14:28:20 · 569 阅读 · 0 评论 -
C++ 虚函数基础知识
1.c++虚函数原理作用:C++中的虚函数的作用主要时实现了多态的机制。当基类中的成员函数定义了虚函数,其子类可以重新改写该函数。也即是允许派生类调用父类的同名函数而实现不同的功能,也叫动态联编。在主函数调用时,只需要定义一个基类指针就可以进行派生类的分别操作。底层原理:虚函数表+虚函数表指针。每一个类都会对应一个虚函数表,一个存放虚函数地址的虚函数表,并创建虚函数指针(vptr)来指向表。2.虚函数指针的初始化过程虚函数表的创建和虚函数指针的初始化都是在构造函数中进行的。当编译器发现基类当中有原创 2020-09-29 08:47:29 · 951 阅读 · 0 评论 -
openssl 实现https 网站
下面是一个用openssl实现获取https 网页内容的demo,整个流程比较简单,主要封装的API如下static int https_init(https_context_t *context,const char* url);static int https_uninit(https_context_t *context);static int https_read(https_context_t *context,void* buff,int len);static int https..原创 2020-07-02 09:49:15 · 437 阅读 · 0 评论 -
C语言标准库所包含的函数功能介绍
C 语言的标准库通常包含了一组标准头文件和一个或几个库函数代码文件。在写 C 程序时,只需使用 #include 预处理命令引入相关头文件,就可以保证程序里能够正确使用标准库功能了。在这些头文件里列出了各个库函数的原型,定义了库函数所使用的有关类型(如表示流的 FILE 结构类型等)和一些符号常量(如 EOF、NULL)。标准头文件包括:C标准头文件下面是对每个标准库所包含的函...原创 2020-04-07 15:26:59 · 6389 阅读 · 0 评论 -
C++:属性封装
C++属性封装代码演示原创 2020-03-10 08:51:55 · 183 阅读 · 0 评论 -
COCOS2D-X主循环的委托模式的学习
在cocos2d-x的主函数中有如下代码:AppDelegate app;Application::getInstance()->run();Application::getInstance()得到的对象是app,为什么呢?具体是怎么做到的?请看下面的代码例子。delegate.h#ifndef _DELEGATE_H_#define _DELEGATE_H_ //抽...原创 2020-03-12 14:36:47 · 158 阅读 · 0 评论 -
仿函数FUNCTION和LAMBDA表达式的使用以及COCOS2D-X中CREATE_FUN()的原理
/** * @author: 龚志慧 * @date: 2017.10.17 * * 模拟cocos2d-x的宏定义 CREATE_FUNC * std::function<>的用法,类似函数指针,如果函数参数是拉姆达表达式, * 函数形参可以用std::function<>,示例如下: * */ #include <iostream&g...原创 2020-03-12 14:37:02 · 123 阅读 · 0 评论 -
拷贝构造函数和移动构造函数解析
拷贝构造函数和移动构造函数解析/** * by: gongzhihui * 2017.12.5 * * 拷贝构造函数调用时机: * 1. 对象作为函数参数 * 2. 对象作为函数返回值 * 3. 用一个对象初始化另一个对象: * T t1; * T t2(ti); * ...原创 2020-03-12 14:37:24 · 185 阅读 · 0 评论 -
一个超级简单的服务器框架
1. 本服务器端框架采用epoll+线程池+任务队列2. Epoll和sernasock是我封装的,ThreadPool用的是http://blog.youkuaiyun.com/shreck66/article/details/50412986Epoll.h/** * by:gzh * 2017.12.12 * 可以改进的地方:EPOLLIN 接收数据read()处可以优化, * ...原创 2020-03-12 14:38:15 · 275 阅读 · 0 评论 -
C++解析XML, TINYXML2的使用
C++解析XML, TINYXML2的使用学习使用tinyxml2,参考https://www.cnblogs.com/happykoukou/p/6307257.html,以及官方tinyxml2的test。主要知识:XMLDocument doc;//创建一个dom对象doc.LoadFile();doc.Parse(); //将字符串转为dom对象auto key = d...原创 2020-03-12 14:37:47 · 323 阅读 · 0 评论 -
非模式对话框的问题
对于非模态窗口,必须重载OnCancel函数,在函数中调用DestroyWindows()方法,且不能调用基类的函数。因为基类函数中调用的是 EndDialog()方法。(因为EndDialog是关闭模态对话框时调用的)而OnClose()也会调用OnCancel()方法。另外想通过OnOK关闭对话框,也必须同样处理,不能直接用默认方法非模态对话框销毁过程OnClose()->OnCan...原创 2020-03-12 14:38:09 · 225 阅读 · 0 评论 -
WINDOWS匿名管道
WINDOWS匿名管道我的理解:windows的匿名管道 在于 父进程和子进程之间创建,需要创建两个管道,一共四个HANDLE,还需要关掉两个设父进程到子进程的管道为pipein,连接父进程的一端,HANDLE为wt,连接子进程的一端,HANDLE为rd设子进程到父进程的管道为pipeout,连接父进程的一端,HANDLE为rd,连接子进程的一端,HANDLE为wt父进程代码...原创 2020-03-16 09:05:07 · 535 阅读 · 0 评论 -
SECP256K1签名
#include <iostream>#include <secp256k1.h>#include <string>#include <sstream>#include <iomanip>#include <assert.h>#include <openssl/sha.h>//十六进制字符串转字符串...原创 2020-03-16 09:05:20 · 2063 阅读 · 1 评论 -
C++用BOOST解析命令行参数
#include <iostream> #include <boost/program_options.hpp> namespace po = boost::program_options; int main(int argc, char *argv[]) { po::variables_map vm; po::options_description...原创 2020-03-10 08:58:06 · 959 阅读 · 0 评论 -
查找排序算法(一)
查找排序算法(一)#ifndef ALGORITHM_H#define ALGORITHM_H#include <array>#include <vector>#include <iostream>// ------------------- 二分查找 -------------------------------// 二分查找,待查找的数组必...原创 2020-03-10 08:56:29 · 152 阅读 · 0 评论 -
C语言词法分析中的贪心算法
C语言词法分析中的贪心算法当我们写出a---b这种语句的时候我们应该考虑C语言的编译器是如何去分析这条语句的。C语言对于解决这个问题的解决方案可以归纳为一个很简单的规则:每一个符号应该包含尽可能多的字符。也就是说,编译器将程序分解成符号的方法是:从左到右一个一个字符的读入,字符一个字符地读入,如果该字符可能组成一个符号,那么再读入下一个字符,判断已经读入的两个字符组成的字符串是否可能是一...原创 2020-03-10 08:52:13 · 393 阅读 · 0 评论 -
C语言指向函数的指针
定义形式:类型 (*指针变量名)(参数列表);例如:int (*p)(int i,int j);在这里 int是函数的返回类型,*p是指向函数的指针,(int i,int j);是函数的参数注意 : intf(int i, int j);int (p)(int i, int j);前者是返回值是指针的函数;后者是一个指向函数的指针。示例1#include <...原创 2020-02-27 11:29:43 · 831 阅读 · 1 评论 -
for循环中的switch的break和continue作用范围
for循环中的switch的break和continue作用范围不空泛的讲理论了,上代码。看下面这个代码:#include <stdio.h> #include <stdlib.h> int main (){ char str[] = "SSSWLLIJKA"; char c; int k; for(k=2;(c=str[k]) ...原创 2020-02-27 11:28:47 · 2907 阅读 · 0 评论 -
C/C++(C++封装)
封装当单一变量无法完成描述需求的时候,结构体类型解决了这一问题。可以将多个类型打包成一体,形成新的类型。这是 c 语言中封装的概念。但是,新类型并不包含,对数据类的操作。所的有操作都是通过函数的方式,去其进行封装。对一组数据变量组进行结合形成结构体--初步的封装。C语言的封装风格,数据放到一起找包Struct,然后把数据以引用或者指针的方式传给行为。#include <ios...原创 2020-02-27 11:26:46 · 440 阅读 · 0 评论 -
属性封装以及继承
属性属性是C#引入的一种语言成分,只有很少的语言支持属性。通过对属性的读和写来保护类中的域。优点:在于对象的使用者可以用一条语句来操作内部的数据。格式如下:public class Department{private string departname; //定义一个私有的变量public string Departna...原创 2020-02-27 09:19:33 · 268 阅读 · 0 评论 -
C++属性封装代码
建立一个Student 类,含有以下信息:1、姓名:name2、性别:gender3、学分(只读):score4、学习:study#include <iostream>#include <stdlib.h>#include <string>using namespace std;class Student{ public...原创 2020-02-27 09:18:47 · 195 阅读 · 0 评论 -
C++三大特性之一:封装
C++三大特性:封装,继承,多态对象:存在属性和行为封装:1.将属性和行为作为一个整体,表现生活中的事物2.将属性和行为加权限控制 private语法:class 类名{ 访问权限:属性/行为}//=== 封装意义一:将属性和行为写在一起表示事物 #include<iostre...原创 2020-02-27 09:17:09 · 346 阅读 · 0 评论 -
C++入门学习:了解封装,类与结构体
A)封装,是面向对象程序设计最基本的特性。把数据(属性)和函数(操作)合成一个整体,这在计算机世界中是用类与对象实现的。B)封装,把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。备注:有2层含义(把属性和方法进行封装 , 对属性和方法进行访问控制)C++中类的封装成员变量,C++中用于表示类属性的变量成员函数...原创 2020-02-27 09:13:04 · 415 阅读 · 0 评论 -
C++:属性封装
C++属性封装代码演示#include<iostream>#include<stdlib.h>#include<string>using namespace std;class Student{public: void setName(string _name) { m_strName=_name; }...原创 2020-02-27 09:09:22 · 327 阅读 · 0 评论 -
运行一个dos命令,并返回执行结果
//运行一个dos命令,并返回执行结果std::basic_string<TCHAR> shellexec(const TCHAR* cmd){ HANDLE hRead = NULL; HANDLE hWrite = NULL; SECURITY_ATTRIBUTES sa = {0}; ST...原创 2020-02-20 16:17:30 · 991 阅读 · 0 评论 -
C++学习笔记
C++模块设计——函数1、函数基础函数是一个命名了的代码块,通过调用函数执行相应的代码。函数可以有0个或多个参数,而且(通常)会产生一个结果。可以重载函数,也就是说,同一个名字可以对应几个不同的函数。一个典型的 函数(function) 定义包括:返回类型(return type)、函数名字、由0个或多个形式参数(parameter,简称形参)组成的 列表 和 函数体(function b...原创 2020-01-19 09:03:36 · 331 阅读 · 0 评论 -
C++ 操作符重载、继承方式、继承方式的调整、消息(成员函数调用)的动态绑定、 纯虚函数和抽象类、多继承、模板、标准模板库、异常处理机制
C++ 操作符重载操作符重载是为了运算更加符合我们在数学上的使用习惯。1. 定义operator <某个操作符>2. 原则1)遵循已有操作符的语法,如单目只能重载成单目2)遵循已有操作符的语义(但这个不是必须的)3)操作符重载的实现路径:可以是一个类的非静态成员函数,也可以是带有类、结构、枚举以及它们的引用类型参数...原创 2019-12-11 15:18:47 · 256 阅读 · 0 评论 -
C++ 引用、成员的访问控制、 this指针、 构造函数、析构函数、 拷贝构造函数、 常成员函数,静态成员
C++ 引用类型引用类型:可以获得指针类型的效果,但是又可以避免指针可读性和可维护性差等问题。1. 定义<类型> &<引用变量>;定义时要初始化<类型>可以是除了void以外的任意C++类型。如: int x=0; int &y=x;y=2;//此时x也是22. 引用类型 VS 指针类型...原创 2019-12-11 15:11:35 · 246 阅读 · 0 评论 -
C++ 枚举类型、C++ 数组类型、C++ 结构类型、C++ 联合类型、C++ 指针类型
C++ 枚举类型枚举类型是一种可以由用户自定义数据集的数据类型。注意:bool类型可以看成是C++语言提供的一个预定义的枚举类型。1. 枚举类型定义enum <枚举类型名> {<枚举值表>};2. 初始化枚举类型的每一个枚举值都对应一个整型数,默认情况下,第一个枚举值的值是0,然后依次增1,但也可以显示初始化任意一个枚举值...原创 2019-12-11 14:46:52 · 1296 阅读 · 0 评论