<?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/%E6%95%B0%E6%8D%AE%E5%A4%84%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/%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86/index.xml" rel="self" type="application/rss+xml"/><item><title>dsv_table: 一文看懂 C++ 高性能表格数据处理</title><link>https://geowisdom.com.cn/posts/resource/utilsxx/readme_dsv_table/</link><pubDate>Sun, 10 May 2026 08:00:00 +0800</pubDate><guid>https://geowisdom.com.cn/posts/resource/utilsxx/readme_dsv_table/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;在科学计算、数据分析和工程应用中，表格数据（如 CSV、TSV、空格分隔文件）是最常见的数据格式之一。然而，C++ 标准库并未提供开箱即用的表格处理工具，开发者往往需要自己编写解析逻辑，处理分隔符、表头、注释、空值等琐碎问题。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;dsv_table&lt;/code&gt; 是 &lt;a href="https://github.com/geophyxx/utilsxx"&gt;utilsxx&lt;/a&gt; 库中的一个核心组件，它提供了一套&lt;strong&gt;完整的表格数据读写与操作方案&lt;/strong&gt;，支持多种分隔格式、灵活的行列访问、数据过滤与排序，以及 JSON 互操作。本文将带你从零开始，一文看懂 &lt;code&gt;dsv_table&lt;/code&gt; 的设计理念与使用技巧。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一什么是-dsv_table"&gt;一、什么是 dsv_table？&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;dsv_table&lt;/code&gt; 中的 &lt;strong&gt;DSV&lt;/strong&gt; 是 &lt;strong&gt;Delimiter-Separated Values&lt;/strong&gt; 的缩写，泛指所有以分隔符（逗号、空格、竖线等）组织的文本表格格式。&lt;code&gt;dsv_table&lt;/code&gt; 不仅能处理 CSV，还能处理任意自定义分隔符的文本文件。&lt;/p&gt;
&lt;h3 id="核心设计特点"&gt;核心设计特点&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;统一存储&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;所有单元格内部以字符串存储，支持按需转换为 &lt;code&gt;int&lt;/code&gt;、&lt;code&gt;double&lt;/code&gt;、&lt;code&gt;std::string&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;String&lt;/code&gt; / &lt;code&gt;Int&lt;/code&gt; / &lt;code&gt;Float&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;Enable&lt;/code&gt;/&lt;code&gt;Disable&lt;/code&gt;），实现&amp;quot;软删除&amp;quot;&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;&amp;quot;SurfaceArea_n&amp;quot;&lt;/code&gt;）或内置编号（如 &lt;code&gt;R3&lt;/code&gt;、&lt;code&gt;C5&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;.txt&lt;/code&gt;、&lt;code&gt;.csv&lt;/code&gt;、&lt;code&gt;.json&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;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="二快速上手"&gt;二、快速上手&lt;/h2&gt;
&lt;h3 id="21-基本加载与查看"&gt;2.1 基本加载与查看&lt;/h3&gt;
&lt;p&gt;假设我们有一个 CSV 文件 &lt;code&gt;sample_data.csv&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-csv" data-lang="csv"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;id&lt;/span&gt;,&lt;span style="color:#e6db74"&gt;lon&lt;/span&gt;,&lt;span style="color:#e6db74"&gt;lat&lt;/span&gt;,&lt;span style="color:#e6db74"&gt;depth&lt;/span&gt;,&lt;span style="color:#e6db74"&gt;den&lt;/span&gt;,&lt;span style="color:#e6db74"&gt;sus&lt;/span&gt;,&lt;span style="color:#e6db74"&gt;name&lt;/span&gt;,&lt;span style="color:#e6db74"&gt;date&lt;/span&gt;,&lt;span style="color:#e6db74"&gt;location&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;,&lt;span style="color:#e6db74"&gt;32.23&lt;/span&gt;,&lt;span style="color:#e6db74"&gt;65.23&lt;/span&gt;,,&lt;span style="color:#e6db74"&gt;2.3&lt;/span&gt;,,&lt;span style="color:#e6db74"&gt;gabbro&lt;/span&gt;,,&lt;span style="color:#e6db74"&gt;&amp;#34;enshi, hubei&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;,&lt;span style="color:#e6db74"&gt;65.2&lt;/span&gt;,&lt;span style="color:#e6db74"&gt;12.7&lt;/span&gt;,,&lt;span style="color:#e6db74"&gt;2.5&lt;/span&gt;,,&lt;span style="color:#e6db74"&gt;basalt&lt;/span&gt;,,&lt;span style="color:#e6db74"&gt;&amp;#34;wuhan&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;,&lt;span style="color:#e6db74"&gt;70.23&lt;/span&gt;,&lt;span style="color:#e6db74"&gt;10.6&lt;/span&gt;,,&lt;span style="color:#e6db74"&gt;3.1&lt;/span&gt;,,&lt;span style="color:#e6db74"&gt;volcanic&lt;/span&gt;,,&lt;span style="color:#e6db74"&gt;&amp;#34;hangzhou, zhejiang&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;加载并查看列信息：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#include&lt;/span&gt; &lt;span style="color:#75715e"&gt;&amp;#34;dsv_table.hpp&amp;#34;&lt;/span&gt;&lt;span style="color:#75715e"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;main&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; utilsxx&lt;span style="color:#f92672"&gt;::&lt;/span&gt;dsv_table t(&lt;span style="color:#e6db74"&gt;&amp;#34;data/sample_data&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;.csv&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; t.info(utilsxx&lt;span style="color:#f92672"&gt;::&lt;/span&gt;ColInfo); &lt;span style="color:#75715e"&gt;// 打印列信息
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;输出示例：&lt;/p&gt;</description></item></channel></rss>