![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++使用
文章平均质量分 95
游学四方
这个作者很懒,什么都没留下…
展开
-
智能指针的使用
文章目录独占型智能指针共享型智能指针线程安全shared_ptr引用计数AttributeMethod引用计数对象释放问题weak_ptrenable_shared_from_this独占型智能指针auto_ptr由于在拷贝和赋值时会转移指针权限,无法在STL容器中使用,在c++17中已经删除unique_ptr为独占式智能指针,无法进行拷贝和赋值,这里我们利用RAII机制来实现一个简单的unique_ptr这里使用泛型编程,unique_ptr内部保存T指针即可,在构造函数保存指针,析构函数原创 2021-12-16 16:27:20 · 1442 阅读 · 0 评论 -
现代 C++ 编译时 结构体字段反射
基于 C++ 14 原生语法,不到 100 行代码:让编译器帮你写 JSON 序列化/反序列化代码,告别体力劳动。本文不讨论完整的 C++ 反射技术,只讨论结构体 (struct) 的字段 (field) 反射,及其在序列化/反序列化代码生成上的应用。正文开始于 [sec|静态反射] 部分,其他部分都是铺垫。。可以略读。。。背景(TL;DR)很多人喜欢把程序员称为 码农,程序员也经常嘲讽自己每天都在 搬砖。这时候,大家会想:能否构造出一些 更好的工具,代替我们做那些无意义的 体力劳动 呢?在实际转载 2021-09-25 06:42:26 · 1564 阅读 · 0 评论 -
C++基础
???? Github???? 本仓库是面向 C/C++ 技术方向校招求职者、初学者的基础知识总结,包括语言、程序库、数据结构、算法、系统、网络、链接装载库等知识及面试经验、招聘、内推等信息。???? 仓库内容如有错误或改进欢迎 issue 或 pr,建议或讨论可在 #12 提出。由于本人水平有限,仓库中的知识点有来自本人原创、读书笔记、书籍、博文等,非原创均已标明出处,如有遗漏,请 issue 提出。本仓库遵循 CC BY-NC-SA 4.0(署名 - 非商业性使用 - 相同方式共享) 协议,转载请注转载 2021-08-09 21:35:38 · 1085 阅读 · 0 评论 -
STL中容器的插入,删除以及查找性能对比
原创 2020-05-12 16:48:08 · 667 阅读 · 0 评论 -
boost::filesystem使用方法,根据路径创建文件夹
filesystem库提供了两个头文件,一个是<boost/filesystem.hpp>,这个头文件包括基本的库内容。它提供了对文件系统的重要操作。 同一时候它定义了一个类path。正如大家所想的。这个是一个可移植的路径表示方法,它是filesystem库的基础。 一个是<boost/filesystem/fstream.hpp>。是对std::fstream的一...转载 2019-12-19 11:40:23 · 6045 阅读 · 0 评论 -
字符串处理
#include <algorithm>#include <windows.h>#include <assert.h>#include <string>#include <sstream>#include <vector> using namespace std; //T类型转s...原创 2019-06-28 11:32:18 · 136 阅读 · 0 评论 -
生成全球唯一名称字符串,GUID的使用
使用CoCreateGuid 函数即可。需要 objbase.h 头文件。HRESULT CoCreateGuid( GUID * pguid);其中GUID结构:typedef struct _GUID { unsigned long Data1; unsigned short Data2; unsigned short Data3; u...原创 2019-03-21 11:29:26 · 420 阅读 · 0 评论 -
const、volatile、mutable的用法
const修饰普通变量和指针const修饰变量,一般有两种写法:const TYPE value;TYPE const value;这两种写法在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。对于一个非指针的类型TYPE,无论怎么写,都是一个含义,即value值不可变。 例如:const int nValue; /转载 2018-01-24 09:56:33 · 138 阅读 · 0 评论 -
最近遇到的问题
注意使用的编译器的版本,进行相应的修改。1.常用的宏定义#define SAFE_DELETE(x) {if(x != NULL) {delete x; x = NULL;}}#define SAFE_DELETE_V(x) {if(x != NULL) {delete[] x; x= NULL;}}2.错误码定义在sdk开发过程中,通过需要大量的错误码,有业务上的,也有一些协议中的,如HTTP中...原创 2017-10-11 16:13:13 · 317 阅读 · 0 评论 -
不要在公共接口中传递STL容器
这是我转别人的,我说说我自己的体会,就是在做乐橙sdk开发的过程中,底层提供的接口中,不会提供STL中相关的,如字符串std::string,因为不同版本的STL引起的问题,踩了很多的坑,后来全都改了,对外提供的接口不准使用std::string. 最近的一个项目,是开发一个framework,提供给公司内部不同的产品线使用。 之间遇到的一个问题,就是STL容器的使用, 而结论是不要在公共接转载 2017-12-15 18:11:06 · 504 阅读 · 0 评论 -
静态库和动态库的区别
什么是库 库是写好的,现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。 本质上来说,库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a、.lib)和动态库(.so、.dll)。 所谓静态、动态是指链接。回顾一下,将一个程序编译成可执行程序的步骤: 静态库 之所以称原创 2017-11-27 17:01:42 · 233 阅读 · 0 评论 -
C++获取文件夹下所有文件名
查找文件需要一个结构体和几个函数。结构体为struct _finddata_t,函数为_findfirst、findnext和_findclose。struct _finddata_t这个结构体是用来存储文件各种信息的。定义如下:struct _finddata_t{unsigned attrib;time_t time_create;time_t time_access;time_t t原创 2017-11-27 16:23:37 · 637 阅读 · 0 评论 -
C++ 实现 ping 功能&& 域名(URL)解析实际 IP地址
1、简述一般情况下,我们想知道在当前电脑设备环境下,某一个网址能不能访问,最简单的方法是win + R 键 ,输入cmd,召唤cmd命令行程序,然后直接用ping命令 + 网址 来看返回的结果,那么我们是通过windows提供的工具来得到相应的结果,那我们能不能自己用代码实现呢? 答案肯定是可以的,在我们输入ping命令后,cmd.exe解析后就进行相应的操作,而我们就是去实现这个操作,下面就讲原创 2017-10-15 22:12:45 · 2025 阅读 · 0 评论 -
C++ 实现 发送HTTP Get/Post请求
1、简述最近简单看了一下关于HTTP请求方面的知识,之前一直用Qt来实现,有专门HTTP请求的QNetworkAccessManager类来处理,实现也比较简单,这里主要讲解一下用C++代码来实现HTTP 的Get/Post请求。 一个HTTP请求报文由请求行(request line)、请求头(header)、和请求数据3个部分组成,注意请求头部分和请求数据中间需要原创 2017-10-15 20:57:26 · 5882 阅读 · 0 评论 -
如何使用谷歌的protocolBuffer(for C++)
简述在上一篇 如何编译安装 protocolBuffer(for C++) 文章中讲述了如何编译,今天讲述一下如何使用,以及编译生成的一些选项以及额外的一些介绍。 1、新建.proto文件下面我们先写一个简单的protobuf文件。新建一个以.proto结尾的文件,如message.proto。然后添加一个Student结构。 syntax = “proto2”; option opti原创 2017-10-16 15:52:14 · 729 阅读 · 1 评论 -
如何编译安装 protocolBuffer(for C++)
一、简述今天这一篇文章讲一讲 protocolBuffer 的编译安装步骤。首先了解一下什么是protocolBuffer。(以下摘自百度百科),如果还不不明白,go on 百度一下。 protocolbuffer(以下简称PB)是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:java、c#、c++、go 和 python,每一种实现都包含了相原创 2017-10-16 15:19:04 · 1841 阅读 · 1 评论 -
Libcurl库常用接口使用说明,限速设置
Webkit 源代码由三大模块组成:1). WebCore ,2). WebKit ,3). JavaScriptCore 。WebCore :排版引擎焦点, WebCore 包含主要以下模块: Loader, Parser(DOM,Render), Layout,Paint 。WebKit :移植层,主要包含: GUI , File System, Thread , Text ,图片编解码等与转载 2017-10-13 16:19:31 · 707 阅读 · 0 评论