- 博客(14)
- 收藏
- 关注
原创 C语言难点总结
如果要强制跳过字符前的空⽩字符,可以写成 scanf(" %c", &ch),即 %c 前加上⼀个空格,表⽰跳过零个或多个空⽩字符。位段的⼏个成员共有同⼀个字节,这样有些成员的起始位置并不是某个字节的起始位置,那么这些位置处是没有地址的。本质上传递的是数组⾸元素的地址,这时 sizeof(arr) 计算的是⼀个地址的⼤⼩(单位字节)⽽不是数组的⼤⼩(单位字节)。所以,输出字符串的头部有两个空格。,取出的是整个数组的地址(整个数组的地址和数组⾸元素的地址是有区别的)。,计算的是整个数组的⼤⼩,单位是字节。
2026-08-05 18:00:25
142
原创 C++难点总结
头文件中定义普通函数inline头文件中定义模板函数直接写(隐式 inline)头文件中定义全局变量inline(C++17+)只在一个 cpp 中用到的函数放 cpp,不加 inline是否必须初始化✅ 必须❌ 可以不初始化能否重新指向❌ 不能✅ 可以是否有空值❌ 不可能为空✅ 可以为 nullptr是否有独立地址❌ 通常不✅ 有使用方式像普通变量需要Foo f;✅ 调用无参构造函数Foo f();❌ 函数声明Foo f{};✅ 推荐写法✅ 推荐写法有参数的构造函数。
2026-08-05 17:59:57
155
原创 SQLite 入门指南:终端命令与常用 API 详解
命令说明示例.open 文件名打开或创建数据库文件.databases显示所有连接的数据库.databases.attach 文件 as 别名附加另一个数据库.backup 文件名备份当前数据库.restore 文件名从备份恢复数据库.quit退出 SQLite.quit.exit退出 SQLite.exit.help显示帮助信息.help打开一个数据库连接。如果数据库文件不存在,则创建它。filename- 数据库文件的路径ppDb- 一个指向 sqlite3* 的指针。
2026-07-28 23:32:00
230
原创 C++ 关联容器对比详解:map、set、multimap、unordered_map、unordered_set
是否需要顺序:需要顺序遍历或范围查询选有序容器;只需快速查找选无序容器。键是否唯一:唯一键用mapset;允许重复键用multimapmultiset。性能要求:数据量大且哈希质量高时,通常更快;数据量小或需要稳定性能时,有序容器更可靠。内存限制:无序容器可能因预留桶而占用更多内存。在实际开发中,和std::map最为常用,分别代表了哈希表和红黑树两种经典实现。理解它们的底层原理和特性差异,有助于编写出更高效、更清晰的 C++ 代码。
2026-07-28 23:30:56
333
原创 C++ gflags 库通俗讲解:从入门到实战
gflags 是 Google 开源的一个 C++ 命令行参数解析库。简单来说,它让你在程序启动时通过命令行传入参数,而不需要自己写复杂的字符串解析代码。比如你写了一个图片处理程序,想通过命令行指定输入文件、输出文件、压缩质量等参数,用 gflags 几行代码就能搞定。—— 布尔类型—— 32 位整数—— 无符号 32 位整数—— 64 位整数—— 无符号 64 位整数—— 浮点数—— 字符串定义后,你就可以通过FLAGS_名字来访问这个变量,就像使用普通变量一样。声明即使用。你只需要用。
2026-07-18 17:38:36
189
原创 C++ httplib 小白入门:Server、Client、Request、Response 逐个讲
httplib是一个用 C++11 写的 HTTP 库,只有一个头文件httplib.h,不需要安装任何其他东西就能用。Server:用来搭建服务器,让别人来访问你的程序。Client:用来当客户端,让你的程序去访问别人的网站或 API。Request:存着请求信息(比如谁来了、带了什么参数)。Response:用来设置要返回给客户端的内容。下面我们通过一个个例子,把这四个类和 Get、Post、Put、Delete 四种请求方式全部讲清楚。类名作用常用成员Server创建 HTTP 服务器。
2026-07-18 17:21:36
237
原创 C++ Google Test(gtest)单元测试入门教程
断言宏说明检查一元谓词 pred(a) 是否为真,失败时打印参数值同上,失败立即终止检查二元谓词 pred(a, b) 是否为真同上,失败立即终止检查三元谓词 pred(a, b, c) 是否为真同上,失败立即终止检查四元谓词 pred(a, b, c, d) 是否为真同上,失败立即终止检查五元谓词 pred(a, b, c, d, e) 是否为真同上,失败立即终止Google Test 是 C++ 生态中最流行的单元测试框架之一。断言宏丰富:数值、字符串、浮点数、异常、崩溃都能测。测试固件。
2026-07-16 19:30:04
183
原创 jsoncpp库主要内容通俗介绍
jsoncpp 就是一个让 C++ 程序能轻松“读懂”和“生成” JSON 数据的工具包。一切数据操作都围绕这个万能容器。用Reader(或新版的 CharReader)把字符串“变”成 Value。用Writer(或新版的 StreamWriter)把 Value“变”回字符串。掌握了这三个概念,你就掌握了 jsoncpp 最核心的用法。剩下的就是查阅官方文档,了解更详细的 API 和选项了。
2026-07-16 19:29:16
224
原创 C++ 迭代器详解:从基础到实战
迭代器(Iterator)是 C++ 标准模板库(STL)中的核心概念,它提供了一种统一的方式来遍历容器中的元素。你可以把迭代器理解为一种“智能指针”,它能够指向容器中的某个元素,并支持移动、访问等操作。迭代器的主要作用是将算法和容器解耦。通过迭代器,算法可以以统一的方式操作不同类型的容器,而不需要关心容器的具体实现细节。在某些场景下,你可能需要为自定义容器实现迭代器。T* data;public:// 简单的前向迭代器T* ptr;
2026-07-15 15:15:06
211
原创 C++ 智能指针对比介绍:unique_ptr、shared_ptr 与 weak_ptr
C++ 智能指针为动态内存管理提供了安全、高效的解决方案。unique_ptr适合独占所有权场景,零开销;shared_ptr适合共享所有权,但需注意循环引用和原子操作开销;weak_ptr作为辅助工具,用于打破循环引用或实现非拥有观察。合理选择智能指针类型,可以显著提升代码的安全性和可维护性。
2026-07-15 13:05:21
320
原创 C++ 函数声明与定义修饰符小白指南
本文将从实际开发的角度出发,系统梳理 C++ 中常见的函数修饰符,包括它们的含义、适用场景以及在不同位置(成员函数、自由函数、函数参数)上的区别。掌握这些修饰符,不仅能让你的 C++ 代码更加健壮,还能帮助你更好地理解标准库和开源项目的接口设计。并非函数修饰符,但它们是函数声明中控制特殊成员函数(构造、析构、拷贝、移动)行为的关键语法。修饰符放在成员函数的参数列表之后,表示该函数是“常量成员函数”。成员函数的使用场景很罕见,通常出现在与硬件寄存器映射、中断服务例程交互的低层代码中。性选择最匹配的版本。
2026-07-14 16:59:59
273
原创 CMake 从入门到精通:现代 C/C++ 项目构建指南
设置最低 CMake 版本。:定义项目,会自动创建变量。:设置变量。如。:添加可执行文件目标。:添加库目标(静态库、动态库或模块库)。CMake 是现代 C/C++ 项目构建的基石。掌握 CMake 不仅能提升构建效率,还能更好地管理项目依赖和跨平台兼容性。推荐学习路径官方文档,特别是官方教程。实践项目:从简单项目开始,逐步添加库、测试、安装规则等。现代 CMake 模式:学习目标属性、依赖传播、生成器表达式等现代特性。社区资源在线书籍。
2026-07-14 16:58:13
375
原创 C++ spdlog 零基础入门:核心函数参数与用法详解
快、简单、纯头文件。你只需要#include一个头文件就能用,不需要额外编译链接。本文只讲核心概念和每个函数的参数、返回值、用法,帮你用最短时间上手。
2026-07-12 18:04:30
167
1
原创 C++ fmt 库完全指南:从基础到高级用法
fmt是一个开源的 C++ 格式化库,旨在提供一种快速、安全且易用的文本格式化方式,以替代传统的printf和iostream。它最初由 Victor Zverovich 开发,现已成为 C++20 标准库<format>的基础。类型安全:编译时检查格式字符串与参数类型是否匹配,避免运行时崩溃。高性能:比和printf更快,部分场景下甚至快一个数量级。易读易写:使用类似 Python 的{}占位符语法,直观清晰。扩展性强:支持自定义类型的格式化。Unicode 友好。
2026-07-12 17:38:15
526
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅