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
Windows – 使用类的成员函数作为Win32窗口消息回调处理函数WindowProc
1 Win32窗口的创建过程 学过Win32界面编程的都知道,创建一个Win32窗口一般经过以下几个步骤: (1)定义窗口对象 (2)注册窗口 (3)创建窗口 (4)显示窗口 (5)消息处理函数 (6)消息循环 一个简单的Win32窗口创建代码与以下代码类似, #include <window…
- C++
- 2022-05-10
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
C++ – Windows/Linux生成uuid(通用唯一识别码)
1 Windows/Linux生成uuid 1.1 uuid UUID含义是通用唯一识别码(Universally Unique Identifier),这是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算环境 (Dis…
- C++
- 2022-04-28
C++ – linux编译C++代码出现error: use of deleted function std::atomic::atomic(const std::atomic&)
1 linux编译C++代码出现error: use of deleted function std::atomic::atomic(const std::atomic&) 今天在Ubuntu,GCC版本为7.5编译类似以下C++代码时出现了error: use of deleted fun…
- C++
- 2022-04-20