C++ – 智能指针的正确使用方式
转载自:https://www.cyhone.com/articles/right-way-to-use-cpp-smart-pointer/,并进行了一些补充。 C++11 中推出了三种智能指针,unique_ptr、shared_ptr 和 weak_ptr,同时也将 auto_ptr 置为废弃…
- C++
- 2022-09-28
C++ – sleep睡眠函数总结
1 操作系统自带的Sleep函数 1.1 Windows系统 在Windows系统中可以使用系统自带的Sleep()函数,需要包含Windows.h头文件 #include <iostream> #include <windows.h> int main() { std::c…
- C++
- 2022-09-20
C++ – 在某一天某个时间点定时执行任务,比如2022年9月19日晚上9点准点执行发送邮件函数
最近在写我自己的一个开源项目,就是能够按设定的时间录制HLS流的一个小工具,方便自己获取视频素材。然后首先需要解决的一个问题是,如何按照设定的时间准点的执行录制任务,这个过程可以简单地描述如下: 设定定时指定录制任务的时间戳,这里的时间戳可以认为是依据本地时区的自 1970 年 1 月 1 日以来持…
- C++
- 2022-09-19
C++ – Windows下字符串UTF8编码转ANSI,ANSI转UTF8编码
1 Windows下字符串UTF8与ANSI编码相互转换 1.1 UTF8转ANSI #include <Windows.h> std::string UTF8ToAnsi(const std::string& str) { int nwLen = MultiByteToWide…
- C++
- 2022-09-06
C++ – 随机洗牌算法,std::random_shuffle和std::shuffle
1 std::random_shuffle和std::shuffle std::random_shuffle和std::shuffle处于头文件#include<algorithm>中。 std::random_shuffle和std::shuffle都用于对给定容器范围内的元素重新进行…
- C++
- 2022-06-06
C++ – 在两个互有依赖关系的类中使用std::shared_ptr和std::weak_ptr进行内存管理
1 C++关于使用std::shared_ptr和std::weak_ptr在两个互有依赖关系的类中的设计 先说一下需求场景,比如我现在需要写一个图形学渲染器,一个渲染器中可能包含多个渲染场景Scene类,每个Scene类又包含了多个需要渲染的模型Actor类,现在我在每个Scene里面通过维护一个…
- C++
- 2022-05-31
C++ – 使用模板和智能指针构建一个双向链表工具类
1 C++使用模板和智能指针构建一个双向链表工具类 本文使用模板和智能指针构建一个双向链表工具模板类DoubleLinkedList<T>,在链表的节点Node内部使用T用于接受模板参数,当前节点的上一个节点使用std::shared_ptr,为防止节点与节点之间的std::shared…
- C++
- 2022-05-31
C++ – 使用std::chrono获取当前秒级/毫秒级/微秒级/纳秒级时间戳
1 使用std::chrono获取当前秒级/毫秒级/微秒级/纳秒级时间戳 1.1 当前时间戳获取方法 先使用std::chrono获取当前系统时间,然后将当前系统时间转换为纪元时间std::time_t类型,之后使用std::localtime对std::time_t类型转换为本地时间结构体std:…
- C++
- 2022-05-27
C++ – 动态链接库dll为什么要使用unsigned char作为byte的内部格式
1 dll为什么要使用unsigned char*作为byte字节数组的内部格式 byte指的是字节,一个字节是8位2进制。 char型占内存也是一个字节,实质上是一个字节长度的有符号整型数,最高位是符号位,另7位是数据位,表示数值-128到127。 而unsigned char没有符号位,因此能表…
- C++
- 2022-05-25
C++ – 我的代码风格/代码规范备忘
本文的代码风格主要是我本人在编写代码时所遵从的代码风格,以Google C++ 代码风格为基础,对一部分进行了修改。 Google C++代码风格可参考:https://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-stylegui…
- C++
- 2022-05-23
C++ – 在Windows/Linux上创建单级目录以及多级目录的跨平台方法
1 C++创建目录 本文将对使用C++在Windows和Linux系统上创建单级目录与多级目录的普通方法进行总结,本文将不会使用C++14新增的std::filesystem的标准库方法。 1.1 在Windows/Linux上创建单级目录 1.1.1 在Windows上创建单级目录 在Window…
- C++
- 2022-05-10
C++ – std::string替换字符串中所有指定的子字符串
1 std::string替换字符串中所有指定的子字符串 std::string并没有提供类似repalceALL之类的方法,我们只能使用std::string::replace方法逐个替换子字符串。 封装的方法如下: std::string ReepalceAllString(std::strin…
- C++
- 2022-05-10