修远之路-C/C++
文章平均质量分 88
C与C++相关知识集萃
飞鹰技术
当你站在山顶的时候,头上还有星空。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++之协程Coroutine
C++20协程是一种轻量级的无栈协程,允许函数执行过程中主动挂起和恢复,相比线程切换开销极低。协程适用于异步IO、生成器、状态机等场景,相比线程具有内存占用小、切换高效的特点。其实现采用"语言机制+库扩展"架构,通过编译器生成底层控制流代码,开发者自定义Promise和Awaitable来控制具体行为。原创 2026-07-20 23:33:58 · 168 阅读 · 0 评论 -
C++之匿名函数对象lambda
Lambda表达式是C++11引入的匿名函数对象,用于替代传统函数指针或仿函数,简化局部逻辑封装。编译器会将其转换为唯一的闭包类实例,性能与仿函数一致。捕获方式支持显式/隐式值捕获或引用捕获,需注意悬垂引用风险和mutable修饰符的作用。原创 2026-07-15 22:58:51 · 133 阅读 · 0 评论 -
C++之获取内存地址std::addressof
std::addressof 是 C++ 标准库提供的地址获取函数,绕过可能被重载的 operator&,直接获取对象真实内存地址。主要应用于智能指针实现、容器内存管理等底层开发场景,能可靠处理重载了取址操作符的特殊类型原创 2026-07-07 21:34:52 · 196 阅读 · 0 评论 -
C++之内存与生命周期管理
摘要:现代C++通过RAII机制和智能指针实现内存安全,将资源生命周期绑定对象作用域。内存分为栈区(自动管理,线程安全)、堆区(动态分配,需防碎片)、全局/静态区(程序生命周期)和常量区(只读)。new/delete隐含构造/析构调用,需严格匹配数组操作。智能指针中,unique_ptr独占所有权,shared_ptr共享引用计数,weak_ptr解决循环引用。高级场景使用enable_shared_from_this安全传递this指针,避免双重释放。核心目标是通过零成本抽象实现异常安全的内存管理。原创 2026-07-06 23:20:28 · 328 阅读 · 0 评论 -
C++之libCurl实现HTTP请求
libCurl是一个跨平台URL传输库,支持HTTP/HTTPS协议。文章重点介绍了其easy interface同步阻塞模式的使用规范,包括全局初始化、请求配置、执行和清理的生命周期管理。原创 2026-07-05 12:18:55 · 193 阅读 · 0 评论 -
C++之引用包装对象std::ref
C++标准库中的std::ref与std::cref函数,用于生成std::reference_wrapper对象,实现了左值引用的包装和传递。reference_wrapper内部存储裸指针,通过隐式转换和操作符重载伪装成原生引用,同时具备可拷贝、可赋值特性原创 2026-07-04 14:07:00 · 264 阅读 · 0 评论 -
C++之模块Modules
C++20模块(Modules)是C++语言的重要变革,彻底取代了传统的头文件包含机制,解决了编译效率低、宏污染、封装性差等问题。模块通过独立编译单元实现接口与实现的封装,仅暴露显式导出的实体。语法上通过export module声明模块,import导入模块,支持接口分离和私有片段原创 2026-06-28 21:45:05 · 353 阅读 · 0 评论 -
.Net互操作-C++Interop (C++/CLI)
.NET中通过 C++/CLI 实现与原生 C++/Win32 库高效互操作。相比 P/Invoke支持更复杂的面向对象集成、更低开销的高频调用和完整的异常传递机制原创 2026-06-25 21:12:10 · 393 阅读 · 0 评论 -
C++之常量体系const
介绍了C++中的四种常量关键字:const、constexpr、consteval和constinit。const提供只读契约但不保证物理不可变;constexpr强制编译期求值,支持元编程;consteval限定函数必须编译期执行;constinit确保静态初始化安全,解决SIOF问题。原创 2026-06-13 11:00:16 · 283 阅读 · 0 评论 -
C++之线程thread到jthread
C++20引入的std::jthread通过RAII机制和协作式取消(stop_token)解决了std::thread的析构安全问题。内置stop_source/stop_token支持优雅终止线程,结合condition_variable_any实现阻塞操作的即时唤醒原创 2026-06-10 22:22:38 · 244 阅读 · 0 评论 -
C++之轻量头文件式编码库cppcodec
cppcodec是一个基于CRTP和编译期查表策略的Header-Only编解码库,支持Base16/Hex、Base32、Base64等多种RFC变体,适用于JWT、MIME、短链接等场景。通过编译期生成256项查表实现高效解码,采用CRTP静态多态避免运行时开销原创 2026-06-08 21:38:56 · 247 阅读 · 0 评论 -
C++之类型安全格式化format
C++20引入的std::format作为现代化字符串格式化工具,解决了传统printf类型不安全和stringstream语法冗长的问题。通过编译期检查格式串与参数类型匹配,以及采用{}占位符配合{:格式符}的简洁语法,提供类型安全、高效的格式化原创 2026-06-07 18:43:55 · 290 阅读 · 0 评论 -
C++之灵活易用的YAML解析库yaml-cpp
yaml-cpp库采用SAX事件驱动模型解析YAML,通过三层间接引用(Node→node_ref→node_data)实现零拷贝语义,支持Anchor/Alias机制。内存管理采用Arena模型,由memory_holder统一管理节点生命周期。原创 2026-06-06 20:10:26 · 292 阅读 · 0 评论 -
C++之现代序列处理范围库Range
C++20引入的Ranges库革新了数据处理的范式,通过"范围+视图+惰性求值"三元体系解决了传统 STL 的痛点:统一的 Range 抽象和 Sentinel 机制;轻量级 View 实现零开销的惰性计算;管道操作符组合多种适配器,形成声明式数据处理流。原创 2026-06-03 22:53:10 · 296 阅读 · 0 评论 -
C++之时间日期库chrono
std::chrono库提供了类型安全、高精度且跨平台的时间处理功能,核心包括时钟(clock)、时间点(time_point)和时间间隔(duration)三大组件;C++20引入了时区支持,通过zoned_time可安全转换本地时间原创 2026-06-02 22:38:51 · 362 阅读 · 0 评论 -
C++之现代易用JSON库nlohmann
介绍了C++的现代JSON库nlohmann/json,采用 Header-Only 设计;使用 Tagged Union 技术实现紧凑内存布局,支持 DOM 和 SAX 两种解析方式:通过 ADL(参数依赖查找)实现自定义类型的无缝转换原创 2026-05-25 22:30:01 · 659 阅读 · 0 评论 -
C++之轻量极速Web框架Crow
介绍了轻量级 C++ Web 框架Crow,采用头文件方式集成,支持 Flask 风格路由、类型安全和内置 JSON/WebSocket 功能;通过编译期参数签名实现路由类型安全;基于 Asio 的 io_service 池简化多线程模型;使用模板递归实现零开销中间件管线原创 2026-05-23 22:09:35 · 456 阅读 · 0 评论 -
C++之高性能跨平台日志库spdlog
介绍了高性能C++日志库spdlog,采用头文件优先设计,基于fmt库实现;包括:超高速异步日志(百万条/秒)、无锁设计、零拷贝内存池和同步/异步双模式;通过环形队列和线程池实现高效异步处理原创 2026-05-19 22:53:03 · 397 阅读 · 0 评论 -
C++之轻量级JSON序列库jsoncpp
介绍了一个轻量级C++ JSON库JsonCpp,采用Tagged Union实现多类型存储,提供DOM风格API和注释保留功能;通过类型安全的Value类实现、CZString字符串优化存储、可选的SecureAllocator安全内存管理平衡了易用性与安全性;并介绍了主要API原创 2026-05-15 23:38:57 · 410 阅读 · 0 评论 -
C++之高性能XML库pugixml架构与API详解
介绍了一个高性能、低内存占用的C++ XML解析库pugixml,其专注于解析速度和运行时效率,采用单头文件架构和自定义内存池管理,基于DOM模型,支持XPath 1.0查询和Unicode处理原创 2026-05-09 23:29:59 · 404 阅读 · 0 评论 -
C++之文件系统库filesystem
介绍了C++17引入的文件和目录操作跨平台库std::filesystem,解决了传统C/C++文件系统操作混乱的问题;核心组件包括path类(处理路径)、directory_entry(缓存文件状态)、迭代器(遍历目录)等。原创 2026-05-08 22:36:40 · 424 阅读 · 0 评论 -
C++之文件系统库filesystem
介绍了C++17引入的文件和目录操作跨平台库std::filesystem,解决了传统C/C++文件系统操作混乱的问题;核心组件包括path类(处理路径)、directory_entry(缓存文件状态)、迭代器(遍历目录)等。原创 2026-05-08 22:24:49 · 319 阅读 · 0 评论 -
C++之概念Concept
介绍了C++20的Concept,其用于为模板参数提供显式、可读的编译期类型约束;解决了传统模板约束(如 SFINAE、enable_if)存在的可读性差、错误信息模糊、语义不清等问题原创 2026-05-06 19:46:04 · 347 阅读 · 0 评论 -
C++之字符串视图string_view
介绍了C++17引入的轻量级、只读、非拥有型字符串视图类std::string_view。它支持从字符串、字符数组等多种源构造,且具有与std::string相似的接口但零拷贝开销;但需特别注意生命周期管理,避免悬垂指针原创 2026-05-05 18:42:28 · 233 阅读 · 0 评论 -
[C++]-网络库mongoose简介
Mongoose是C语言网络库,为TCP、UDP、HTTP、WebSocket、CoAP、MQTT实现了事件驱动型的非阻塞api。原创 2022-02-03 22:33:07 · 9450 阅读 · 3 评论 -
[C++]-yml库yaml-cpp简介
介绍了yaml的基本语法,以及开源操作库yaml-cpp与基本使用。原创 2022-02-20 20:24:40 · 11086 阅读 · 8 评论 -
[C++]-JSON库nlohmann简介
文章目录nlohmann库声明与构造解析与序列化获取与修改value是否存在contains查找findflattenitems类型判断结构体json示例nlohmann/json 是一个用于解析json的开源c++库,使用方便直观。nlohmann库nlohmann库(https://github.com/nlohmann/json)提供了丰富而且符合直觉的接口(https://json.nlohmann.me/api/basic_json/),只需导入头文件即可使用,方便整合到项目中。声明与构造原创 2022-02-05 11:44:03 · 18678 阅读 · 0 评论 -
[C++]-日志记录库SPDLog简介
文章目录spdlog库日志记录槽sink日志记录器logger输出格式pattern对齐方式截断字符串格式化fmtFormat Specificationspdlog使用异常处理logger基础用法stdout日志文件日志基本文件循环文件每日文件示例spdlog是一款开源的、快速的日志库。spdlog库spdlog是基于C++11实现的一款纯头文件的日志管理库(git地址:https://github.com/gabime/spdlog,API说明:https://spdlog.docsforge.c原创 2022-02-02 18:44:41 · 13187 阅读 · 0 评论 -
C++11右值语义与类型转换
文章目录右值语义深浅拷贝左值与右值右值引用纯右值与将亡值函数万能引用引用折叠完美转发类型转换右值是C++11中新出现的特性,可以提高性能,减少拷贝开销。右值语义有移动构造与赋值的类示例:class MyString{public: MyString() : m_pData(NULL), m_nLen(0) { cout << "Default constructor" << endl; } MyString(const ch原创 2022-01-08 20:08:22 · 767 阅读 · 0 评论 -
[C++]-VSCode+Makefile编译C++
文章目录开发C++源文件MakefileVSCode配置taskproperties在《VSCode+WSL开发环境》中,已经介绍了VSCode+WSL如何进行开发;本文将介绍如何使用makefile来编译C++程序。开发以编译子文件夹下的文件为例,目录结构如下:C++源文件源文件中,以vector为例,如何使用移动构造,以及快速清空vector:#include <iostream>#include <vector>#include <memory>原创 2022-01-01 12:47:56 · 9245 阅读 · 1 评论 -
BOOST的JSON解析库Boost.JSON简介
文章目录JSON库基础objectvaluearraystringJSON使用构造JSON序列化对象序列化反序列化对象反序列化流输入Boost很早就有了能解析JSON的库(Boost.PropertyTree)还能解析XML,INI和INFO等。但其笨重复杂。在1.75后引入了新的JSON解析库Boost.JSON。JSON库基础JSON中主要包括四种数据类型:object、value、array和string;要使用JSON功能,需要:#include <boost/json.hpp>原创 2021-12-26 18:27:09 · 12973 阅读 · 0 评论 -
通过UDP广播自动获取IP地址
有时服务端地址是不固定的,需要自动获取;此时就可以通过UDP广播来方便地实现;给出了对应实现的客户端与服务端代码示例原创 2008-11-06 10:54:00 · 10701 阅读 · 1 评论 -
[Util]-VSCode+WSL开发环境
Windows下如何升级WSL,以及VSCode的快捷键;以及如何远程Linux和wsl原创 2021-10-01 18:27:44 · 2967 阅读 · 0 评论 -
[C++]-浅谈const
文章目录const使用定义常量指针函数修饰参数修饰返回值转换为非constconst成员函数const 是不变的,不易改变的意思。在 C++ 中可用来修饰内置类型变量、自定义对象、成员函数、返回值、函数参数。const使用const可以保护修饰的对象,防止意外修改;并有助于优化,提升性能(如const常量可能都不需要为其分配内存)。定义常量const修饰的变量为常量(声明时必须初始化),与宏类似,但更安全。以下两者方式是等价的:<TYPE> const name = value;c原创 2021-09-14 08:04:37 · 229 阅读 · 0 评论 -
C++内存分配之new与delete
[TOC]C++中在堆内存中创建和销毁对象需要借助关键字new和delete来完成,new和delete既是C++中的关键字也是一种特殊的运算符。内存分配C++中有多种内存分配、释放方式:分配释放类属可否重载malloc()free()C函数不可newdeleteC++表达式不可::operator new()::operator delete()C++函数可allocator::allocate()allocator::deallo.原创 2021-09-12 13:11:47 · 671 阅读 · 0 评论 -
编程语言之沧海拾贝
各编程语言C++、Java、golang、Python,以及数据库MySQL相关的精彩文章件列表,以及开发工具、Linux软件和Typora使用文章列表原创 2021-06-24 21:20:30 · 977 阅读 · 1 评论 -
[C++]-C++基本输入及读取整行
文章目录标准输入流cin`>>`cn.get整行读取std::getlinecin.getlinecin.getC++标准库提供了一组丰富的输入/输出功能。C++的I/O发生在流中,流是字节序列:如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫做输入操作。如果字节流是从内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等),这叫做输出操作。标准输入流预定义的cin 是 iostream 类的一个实例。cin 对象附属到标准输入设备,通常是键盘;cin 与流提取运原创 2021-02-17 14:48:57 · 7542 阅读 · 1 评论 -
[C++]-Linux中创建Daemon程序
文章目录守护进程后台进程编写守护进程forkdaemonLinux中的守护进程(daemon进程)相当于Windows中的后台服务程序,一直运行于后台。守护进程Linux中,每一个与用户进行交流的界面称为终端,每一个从此终端允许的进程都会依附于此终端,因此这个终端也称为这些进程的控制终端;当控制终端被关闭时,相应的进程都会自动关闭。若不想让进程因终端的关闭或变化而受影响,就需要把进程变为守护进程。守护进程(Daemon进程)是脱离于终端(避免进程在执行过程中的信息在任何终端上显示,且进程也不会被任何原创 2021-02-15 12:33:37 · 750 阅读 · 0 评论 -
C++中位运算与应用
文章目录位运算简单操作复杂位操作位运算案例交换整数求二进制中1个数字符串的组合找相同位1的整数位运算是C/C++中的基本运算,位运算允许程序员操作数据的某一特定位。位运算位运算由位运算操作符和操作数组成,不同的位运算操作符定义了不同的位运算。操作符示例说明~~expr翻转expr的每一个位:1变0,0变1&expr1&expr2在每个位所在处,如果expr1和expr2都含有1,那么结果该位为1,否则为0|expr1 | expr2在每个原创 2020-12-21 23:02:37 · 537 阅读 · 0 评论 -
编程语言与数据库语句集锦
数据库(mysql)的常用操作语句;C++、python、go语言等的一些有意义小函数示例原创 2020-10-20 21:02:25 · 811 阅读 · 0 评论
分享