<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>地球物理 on 知星悟地</title><link>https://geowisdom.com.cn/tags/%E5%9C%B0%E7%90%83%E7%89%A9%E7%90%86/</link><description>Recent content in 地球物理 on 知星悟地</description><generator>Hugo -- 0.153.2</generator><language>en-us</language><lastBuildDate>Sun, 10 May 2026 08:00:00 +0800</lastBuildDate><atom:link href="https://geowisdom.com.cn/tags/%E5%9C%B0%E7%90%83%E7%89%A9%E7%90%86/index.xml" rel="self" type="application/rss+xml"/><item><title>UtilsXX: 专为科学计算打造的 C++17 工具库</title><link>https://geowisdom.com.cn/posts/resource/utilsxx/readme_utilsxx/</link><pubDate>Sun, 10 May 2026 08:00:00 +0800</pubDate><guid>https://geowisdom.com.cn/posts/resource/utilsxx/readme_utilsxx/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;在科学计算和工程应用领域，C++ 开发者常常面临一个尴尬的局面：标准库提供了基础的数据结构和算法，但面对具体的科研需求——比如读取一个带注释的 CSV 文件、在终端显示一个进度条、解析复杂的配置文件、或者监控一个耗时数小时的计算进程——往往需要自行编写大量&amp;quot;胶水代码&amp;quot;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UtilsXX&lt;/strong&gt; 正是为解决这些痛点而生。它是一个基于 C++17 的轻量级工具库，专为地球科学、物理学和工程计算领域设计。不同于 Boost 这样的&amp;quot;全能型&amp;quot;库，UtilsXX 聚焦于科研工作者日常最高频的需求：数据处理、文件读写、终端交互、配置管理、时间计算和物理常数。本文将全面介绍 UtilsXX 的设计理念、核心模块和使用方法，帮助你快速上手并融入自己的项目。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一设计理念为什么创建-utilsxx"&gt;一、设计理念：为什么创建 UtilsXX？&lt;/h2&gt;
&lt;h3 id="11-科研编程的特殊需求"&gt;1.1 科研编程的特殊需求&lt;/h3&gt;
&lt;p&gt;科学计算程序与传统软件工程有显著不同：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;数据驱动&lt;/strong&gt;：大量时间花在读取、清洗、转换各种格式的数据上&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;长时运行&lt;/strong&gt;：数值模拟可能持续数小时甚至数天，需要进度反馈和交互控制&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;参数密集&lt;/strong&gt;：算法通常有数十个可调参数，需要灵活的配置管理&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;跨平台协作&lt;/strong&gt;：代码需要在个人笔记本、工作站和超算集群上无缝运行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;快速迭代&lt;/strong&gt;：研究思路变化快，代码需要易于修改和扩展&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="12-utilsxx-的设计原则"&gt;1.2 UtilsXX 的设计原则&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;原则&lt;/th&gt;
&lt;th&gt;实践&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Header-Only 优先&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;大部分组件为单头文件，直接 &lt;code&gt;#include&lt;/code&gt; 即可使用&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;零依赖或内嵌依赖&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;核心模块无外部依赖；第三方库（如 nlohmann/json、toml11）直接内嵌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;类型安全&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;大量使用模板和 &lt;code&gt;static_assert&lt;/code&gt;，编译期捕获类型错误&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;异常友好&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;统一的 &lt;code&gt;error_handler&lt;/code&gt; 错误处理机制，提供清晰的错误信息&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;跨平台&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Windows、Linux、macOS 统一封装，终端操作透明适配&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;科研导向&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;内置地球物理常数、WGS84 参数、角度弧度转换等地学常用工具&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="13-与现有生态的关系"&gt;1.3 与现有生态的关系&lt;/h3&gt;
&lt;p&gt;UtilsXX 不是要取代谁，而是填补&amp;quot;标准库不够用、重型框架太重&amp;quot;之间的空白：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;vs 标准库&lt;/strong&gt;：补充了 CSV/JSON/TOML 解析、进度条、终端控制等缺失功能&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;vs Boost&lt;/strong&gt;：更轻量、更聚焦，学习成本更低&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;vs Python 生态&lt;/strong&gt;：让你在 C++ 中也能拥有类似 pandas（&lt;code&gt;dsv_table&lt;/code&gt;）、tqdm（&lt;code&gt;progress_bar&lt;/code&gt;）、argparse（&lt;code&gt;get_option&lt;/code&gt;/&lt;code&gt;CLI11&lt;/code&gt;）的体验&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="二项目概览与快速开始"&gt;二、项目概览与快速开始&lt;/h2&gt;
&lt;h3 id="21-目录结构"&gt;2.1 目录结构&lt;/h3&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;utilsxx/
├── lib/ # 核心头文件库
│ ├── vector.hpp # 向量类型与算法
│ ├── matrix.hpp # 轻量级矩阵
│ ├── dsv_table.hpp # 表格数据处理
│ ├── str_utils.hpp # 字符串工具
│ ├── file_utils.hpp # 文件操作
│ ├── get_option.hpp # 配置参数解析
│ ├── progress_bar.hpp # 终端进度条
│ ├── process_monitor.h # 进程监控
│ ├── utc_time.hpp # UTC 时间处理
│ ├── constants.hpp # 数学与物理常数
│ ├── term_utils.hpp # 终端控制
│ ├── json.hpp # JSON 解析（nlohmann/json）
│ ├── toml.hpp # TOML 解析（toml11）
│ ├── CLI11.hpp # 命令行解析（CLI11）
│ ├── indicators.hpp # 高级进度条（indicators）
│ ├── error_handler.hpp # 错误处理
│ └── src/ # 少量需要编译的源文件
│ └── process_monitor.cpp
├── demo/ # 示例程序
├── data/ # 示例数据文件
├── extra/ # 第三方库示例
├── CMakeLists.txt # CMake 构建配置
├── manager.sh # 便捷管理脚本
└── UtilsXXConfig.cmake.in # CMake 包配置模板
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="22-编译安装"&gt;2.2 编译安装&lt;/h3&gt;
&lt;p&gt;UtilsXX 使用 CMake 构建，支持作为子项目或直接安装到系统：&lt;/p&gt;</description></item></channel></rss>