
C++
文章平均质量分 72
C++ 由C语言发展而来,几乎完全兼容C语言;换句话说,你编写的C语言代码几乎可以不加修改地用于 C++。
C语言是面向过程的语言,C++ 在此基础上增加了面向对象以及泛型编程机制,因此 C++ 更适合大中型程序的开发。然而,C++ 并没有牺牲效率,如果不使用高级特性,它的效率和C语言几乎没有差异。
mayue_csdn
这个作者很懒,什么都没留下…
展开
-
C++ log4cplus 日志库使用
log4cplus是一个易于使用的C++日志API,它提供了对日志管理和配置的线程安全、灵活和任意粒度的控制。它是以Java log4j API为模型的。rootLogger 根日志器:同一份配置,可指定1个logger 日志器:同一份配置,可指定多个。转载 2024-08-27 15:27:49 · 729 阅读 · 0 评论 -
C/C++ json库
问题:JSON是否需要包含换行符,如何处理?JSON转义、\r \n \r\njson中含有换行符’\r’,’\n’的处理https://www.cnblogs.com/chuanfengzhang/p/12189176.htmljson的中换行符的处理https://blog.youkuaiyun.com/kof820/article/details/40779165JSON需要转义的字符https://blog.youkuaiyun.com/u012916291/article/details/70742044原创 2024-07-19 14:27:26 · 5107 阅读 · 1 评论 -
C/C++ yaml 库
YAML(YAML Ain’t Markup Language)是一种人类可读的数据序列化格式,通常用于配置文件和数据交换。它由Clark Evans在2001年创建,旨在成为一种简单、直观且易于理解的格式。简洁性YAML的设计目标是尽可能简洁,易于阅读和编写。它使用缩进来表示层次结构,而不是像XML那样的标签。易读性YAML文件的可读性非常高,适合人类阅读和编辑,而不仅仅是机器解析。灵活性YAML支持多种数据类型,包括标量(如字符串、整数、浮点数)、序列(列表)、映射(键值对集合)等。扩展性。原创 2024-07-18 10:12:23 · 1477 阅读 · 0 评论 -
cereal C++11 序列化库介绍
cereal是一个只包含头文件的C++11序列化库cereal支持任何类型的数据并可以将其序列化为不同形式,例如:二进制、XML或者JSON。cereal的设计理念是快速、轻量级和容易扩展;cereal没有依赖第三库而且可以轻易的将其和其他代码相。项目使用cereal的原因:(需求)给WEB用:JSON给后端用:C++对象(不够贴切)(成员变量自动序列化成JSON)原创 2024-07-19 09:39:07 · 1328 阅读 · 0 评论 -
c++ virtual 关键字 override 关键字
C++ virtual 和 override 关键字转载 2023-08-14 17:06:50 · 1175 阅读 · 0 评论 -
C++异常处理(try catch)
C++异常处理(try catch)C++异常捕获C++ 异常处理机制会涉及 try、catch、throw 三个关键字(注意没有 finally 关键字)程序的错误大致可以分为三种,分别是语法错误、逻辑错误和运行时错误:C++ 异常(Exception)机制就是为解决运行时错误而引入的。C++ 规定,异常类型可以是 int、char、float、bool 等基本类型,也可以是指针、数组、字符串、结构体、类等聚合类型。原创 2023-04-07 16:03:09 · 1502 阅读 · 0 评论 -
C++回调函数
如果你把函数的指针(地址)作为参数传递给另一个函数,回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。p指向Max函数之后,然后用p调用Max函数,返回两个数中的最大值。特别注意的是,因为函数名本身就可以表示该函数地址(指针),因此在获取函数指针时,可以直接用函数名,也可以取函数的地址。前面函数指针的方式作为回调函数的一种方式,可以同时用于C和C++,下面介绍另外的一些方式,因为C++引入了对象的概念,可以使用类的成员和静态函数作为回调函数。转载 2023-04-07 13:49:29 · 4780 阅读 · 0 评论 -
C++ 并发支持库 (线程 原子操作 条件变量 信号量)
这些组建为细粒度的原子操作提供,允许无锁并发编程。涉及同一对象的每个原子操作,相对于任何其他原子操作是不可分的。原子对象不具有数据竞争。原创 2023-03-19 15:18:03 · 255 阅读 · 0 评论 -
C++ 打印十六进制数据
大家可能在做流媒体开发,或者网络相关开发的时候经常需要对数据进行逐个字节的分析,这个时候如果能在日志里面通过二进制,或者十六进制的方式打印出字节的详细内容,这样就能很方便的分析数据了。需求:std::string可以存放非字符串数据,在调试过程中需要将原始数据按16进制的格式打印出来。这里有个很小的代码片段,可以完成这个功能。转载 2023-03-19 11:31:19 · 3031 阅读 · 0 评论 -
STL中用erase()方法遍历删除元素
STL中使用erase()方法遍历删除元素转载 2022-06-02 10:58:59 · 742 阅读 · 0 评论 -
C++调用C接口
C++调用C接口转载 2022-05-19 13:59:13 · 997 阅读 · 0 评论 -
C++11 auto 与 decltype 关键字
文章目录auto 关键字decltype 关键字decltype 简介decltype用法decltype 示例decltype 问题参考资料auto 关键字auto 占位类型说明符:对于变量,指定要从其初始化器自动推导出其类型。https://zh.cppreference.com/w/cpp/language/auto编程时候常常需要把表达式的值付给变量,需要在声明变量的时候清楚的知道变量是什么类型。然而做到这一点并非那么容易(特别是模板中),有时候根本做不到。为了解决这个问题,C++11新转载 2021-12-11 18:50:23 · 253 阅读 · 0 评论 -
C/C++截取下载url中文件名称
文章目录实例https://blog.youkuaiyun.com/u013171226/article/details/107680268实例#include <iostream>#include <string>using namespace std;int main(){ string str_path = "https://cdn.stubdownloader.services.mozilla.com/builds/firefox-latest-ssl/zh-C转载 2021-12-09 19:47:01 · 608 阅读 · 0 评论 -
C++继承和派生
文章目录C++继承和派生是什么意思(通俗易懂)http://c.biancheng.net/view/250.htmlC++继承与派生的概念、什么是继承和派生http://c.biancheng.net/cpp/biancheng/view/223.htmlC++继承与派生教程http://c.biancheng.net/cplus/inherit/C++多继承https://blog.youkuaiyun.com/mayue_web/article/details/88220398C++中的三种继原创 2021-12-03 16:08:40 · 544 阅读 · 0 评论 -
C++模板学习
文章目录1. C++模板2. 函数模板( Function templates)2.1 函数模板分类3. 类模板(Class templates)4. 参考资料1. C++模板模板定义:模板是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数,从而实现了真正的代码可重用性。模板分类:函数模板和类模板。函数模板针对参数类型不同的函数;类模板仅针对数据成员和成员函数类型不同的类。使用模板目的:让程序员编写与类型无关的代码。注意:模板的声明或定义只能在全局,命名空间或类范围内进行。即不转载 2021-12-03 15:38:16 · 1871 阅读 · 2 评论 -
C++11 中std::function和std::bind的用法
文章目录关于std::function 的用法1.保存自由函数2.保存lambda表达式3.保存成员函数关于std::bind 的用法版权声明:本文为优快云博主「阳光柠檬_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.youkuaiyun.com/liukang325/article/details/53668046关于std::function 的用法其实就可以理解成函数指针1.保存自由函数void printA(int a){原创 2021-12-03 11:31:38 · 494 阅读 · 0 评论 -
C++ 输入/输出库
C++ 输入/输出库使用原创 2021-09-26 14:47:28 · 167 阅读 · 0 评论 -
C++11新特性之五:Lambda
原文:https://blog.youkuaiyun.com/caoshangpa/article/details/79138391C++11的一大亮点就是引入了Lambda表达式。利用Lambda表达式,可以方便的定义和创建匿名函数。对于C++这门语言来说来说,“Lambda表达式”或“匿名函数”这些概念听起来好像很深奥,但很多高级语言在很早以前就已经提供了Lambda表达式的功能,如C#,Python等。今天,我们就来简单介绍一下C++中Lambda表达式的简单使用。声明Lambda表达式Lambda表达式完转载 2021-09-24 10:34:43 · 209 阅读 · 0 评论 -
C++ 动态内存管理/智能指针
文章目录概述std::shared_ptrenable_shared_from_thissharedptr线程安全概述C++智能指针位于标准库头文件 ,此头文件是动态内存管理库的一部分。std::shared_ptrhttps://zh.cppreference.com/w/cpp/memory/shared_ptrenable_shared_from_thishttps://zh.cppreference.com/w/cpp/memory/enable_shared_from_thisht转载 2021-09-24 10:23:34 · 214 阅读 · 0 评论 -
理解 __declspec(dllexport)和__declspec(dllimport)
理解 __declspec(dllexport)和__declspec(dllimport)https://blog.youkuaiyun.com/bytxl/article/details/46313581转载 2021-02-05 11:49:30 · 1235 阅读 · 0 评论 -
C++静态库与动态库
转载自:http://www.cnblogs.com/skynet/p/3372855.html作者:吴秦这次分享的宗旨是——让大家学会创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这里不深入介绍静态库、动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书《程序员的自我修养——链接、装载与库》。什么是库库是写好的现有的,成熟的,可以复用的代码。现实中每个程序...转载 2020-07-30 15:05:06 · 315 阅读 · 1 评论 -
C++ std::string 常用函数用法记录
C++ std::string 使用原创 2020-06-06 14:16:14 · 314 阅读 · 2 评论 -
std::to_string
项目中遇到一个要将int转成std::string的使用,看到前面同事是通过stringstream实现的,感觉有点麻烦,实现方式如下:#include <iostream>#include <sstream>#include <string>using namespace std;int main(){ int sn = 33; std::s...原创 2019-04-13 15:40:51 · 6357 阅读 · 0 评论 -
C++ 匿名函数
1.概述匿名函数(英文名:lambda)就是没有名字的函数。最简单的匿名函数是[](){},它没有参数也没有返回值。在匿名函数中,[]里面用来捕获函数外部的变量,而()里面就是匿名函数的参数,{}里面就是函数的执行代码。匿名函数,也成lambda函数或lambda表达式;基础示例#include <iostream> using namespace std; ...转载 2019-02-25 14:19:15 · 12477 阅读 · 0 评论 -
C++11 std::bind
概述std::bind函数定义在头文件functional中,是一个函数模板,它就像一个函数适配器,接受一个可调用对象(callable object),生成一个新的可调用对象来“适应”原对象的参数列表。一般而言,我们用它可以把一个原本接收N个参数的函数fn,通过绑定一些参数,返回一个接收M个(M可以大于N,但这么做没什么意义)参数的新函数。同时,使用std::bind函数还可以实现参数顺序调整...转载 2019-02-25 13:34:03 · 1445 阅读 · 0 评论 -
C++ std::function
转自:https://blog.youkuaiyun.com/hzy925/article/details/79676085类模版std::function是一种通用、多态的函数封装。std::function的实例可以对任何可以调用的目标实体进行存储、复制、和调用操作,这些目标实体包括普通函数、Lambda表达式、函数指针、以及其它函数对象等。std::function对象是对C++中现有的可调用实体的一...转载 2019-02-22 18:09:00 · 267 阅读 · 0 评论 -
C++11 decltype关键字
转载自:https://www.cnblogs.com/cauchy007/p/4966485.html1.decltype意义有时我们希望从表达式中推断出要定义变量的类型,但是不想用该表达式的值初始化变量(如果要初始化就用auto了)。为了满足这一需求,C++11新标准引入了decltype类型说明符,它的作用是选择并返回操作数的数据类型,在此过程中,编译器分析表达式并得到它的类型,却不实际...转载 2019-02-22 16:15:55 · 173 阅读 · 0 评论 -
C++11新特性之 “=default” 、“=delete”
1.= default1.1 引入背景C++ 的类有四类特殊的成员函数,分别为:默认构造函数,析构函数,拷贝函数以及拷贝赋值函数。如果程序没有显式地为一个类定义某个特殊成员函数,而又需要用到该特殊成员函数时,编译器会隐式地为这个类生成一个默认的特殊成员函数。例如:class X {private: int a;};X x; //可以编译通过,编译器隐式生成默认构造函数...转载 2019-02-22 14:15:42 · 4525 阅读 · 0 评论 -
C/C++预处理指令
C/C++常见的预处理指令:#空指令,无任何效果#include包含一个源代码文件#define定义宏#undef取消已定义的宏#if如果给定条件为真,则编译下面代码#ifdef如果宏已经定义,则编译下面代码#ifndef如果宏没有定义,则编译下面代码#elif如果前面的#if给定条件不为真,当前条件为真,则编译下面代码#endif结束一个#if……#else条件编译块#err...原创 2019-08-02 16:34:37 · 432 阅读 · 1 评论 -
C/C++ switch()参数类型
关于switch的参数类型switch(expr1)中,expression 必须是一个整型或枚举类型,或者是一个 class 类型,其中 class 有一个单一的转换函数将其转换为整型或枚举类型。由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。因此传递给 switch 和case 语句的参数应该是 int、 short、 char...转载 2019-04-26 09:50:44 · 12805 阅读 · 0 评论 -
c++ typedef和#define的作用范围
转自:https://www.cnblogs.com/chenhuan001/p/7553829.htmltypedef:如果放在所有函数之外,它的作用域就是从它定义开始直到文件尾;如果放在某个函数内,定义域就是从定义开始直到该函数结尾;#define:不管是在某个函数内,还是在所有函数之外,作用域都是从定义开始直到整个文件结尾。define在同一编译单元内部,就算在不同的命名空间内,...转载 2019-02-22 16:49:57 · 755 阅读 · 0 评论 -
C/C++ typedef
一.基本解释typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。二.用法(1)用typedef声明一个新类型名来代替已有的类型名。如:typedef int Stat...转载 2019-02-22 16:46:39 · 124 阅读 · 0 评论 -
C/C++ int数组初始化
一、一维数组C/C++初始化静态数组 int array[100]; //定义了数组array,但并未对数组初始化;静态数组 int array[100] = {0}; //定义了数组array,并将数组元素全部初始化为0;静态数组 int array[100] = {1}; //定义了数组array,并将数组第一个元素初始化为1,后面99个元素初始化为0;静态数组 int arr...原创 2019-01-19 14:21:02 · 68765 阅读 · 3 评论 -
std::cin使用
1.概念C++ 基本的输入输出C++ 标准库提供了一组丰富的输入/输出功能,这里介绍C++ 编程中最基本和最常见的 I/O 操作。C++ 的 I/O 发生在流中,流是字节序列。如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫做输入操作。如果字节流是从内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等),这叫做输出操作。标准输出流(cout)预定义的对象 cout 是 ...转载 2019-04-24 13:24:11 · 30095 阅读 · 0 评论 -
c++ override和final关键字
C++11之前,一直没有继承控制关键字。禁用一个类的进一步衍生是可能的但也很棘手。为避免用户在派生类中重载一个虚函数,你不得不向后考虑。C++ 11添加了两个继承控制关键字:override和final。override确保在派生类中声明的重载函数跟基类的虚函数有相同的签名。final阻止类的进一步派生和虚函数的进一步重载。C++ override关键字https://blog.csdn.n...转载 2019-03-11 19:53:59 · 656 阅读 · 0 评论 -
C++ final关键字
1.禁用继承C++11中允许将类标记为final,方法时直接在类名称后面使用关键字final,如此,意味着继承该类会导致编译错误。实例如下:class Super final{ //......};2.禁用重写C++中还允许将方法标记为fianal,这意味着无法再子类中重写该方法。这时final关键字至于方法参数列表后面,如下class Super{ public: ...转载 2019-03-11 19:51:11 · 53991 阅读 · 7 评论 -
C++ override关键字
转载自:https://www.cnblogs.com/xinxue/p/5471708.html1.公有继承公有继承包含两部分:一是 函数接口" (interface),二是 “函数实现” (implementation)如 Shape 类中,三个成员函数,表示三种继承方式:class Shape {public: virtual void Draw() const = 0;...转载 2019-03-11 19:43:26 · 414 阅读 · 0 评论 -
C++ friend关键字
C++中的友元机制允许类的非公有成员被一个类或者函数访问,友元按类型分为三种:普通非类成员函数作为友元,类的成员函数作为友元,类作为友元。1.友元的内容友元包括友元的声明以及友元的定义。友元的声明默认为了extern,就是说友元类或者友元函数的作用域已经扩展到了包含该类定义的作用域,所以即便我们在类的内部定义友元函数也是没有关系的。2.非成员友元函数友元函数是在类中用关键字friend修饰...原创 2019-03-07 20:17:25 · 1101 阅读 · 0 评论 -
C++静态成员变量初始化和赋值
1.背景有这样一套会话机制,CSession为会话对象,CSessionManager为会话管理类,在CSession会话需要销毁时,CSession主动发送消息给CSessionManager销毁session。同时CSession是一个基类,子类通过继承CSession实现不同的session处理。实现主要考虑三个方面(创建、处理、销毁):通过不同的server创建不同的session...原创 2019-03-07 14:29:57 · 20600 阅读 · 2 评论 -
C++多继承
转载自:https://www.cnblogs.com/shijingjing07/p/5564812.html#top在C++语言中,一个派生类可以从一个基类派生,也可以从多个基类派生。从一个基类派生的继承称为单继承;从多个基类派生的继承称为多继承。1.继承的三种方式公有继承(public),私有继承(private),保护继承(protected)三种继承方式的说明,如下表所示:2...转载 2019-03-06 10:12:32 · 4574 阅读 · 1 评论