当前位置:   article > 正文

[C++] 第三方开源csv解析库介绍和使用_c++ csv库

c++ csv库

什么是csv格式?

CSV格式(Comma-Separated Values)是一种常见的电子表格文件格式,以逗号(或其它特定字符,比如\t)作为分隔符来分隔不同的数据字段。CSV文件通常用于存储表格数据,例如人员信息、商品信息等。

CSV文件具有以下特点:

  1. 纯文本格式,易于阅读和编辑;
  2. 第一行通常为每列的字段名称,但也可以没有列头;
  3. 每行代表一个数据记录,每列代表一个数据字段;
  4. 支持排序和筛选功能,方便数据分析和处理。

CSV文件的扩展名通常是“.csv”,例如“data.csv”。

以下是几个用逗号分割的CSV文件的例子:

1. 人员信息表(逗号分隔)

  1. 姓名,年龄,性别,地址
  2. 张三,25,男,北京
  3. 李四,30,女,上海
  4. 王五,28,男,广州

2. 商品信息表(\t分隔)

  1. 商品编号 商品名称 单价 库存
  2. 001 电视 3000 50
  3. 002 冰箱 4000 30
  4. 003 洗衣机 2000 20

3. 学生成绩表(逗号分隔,没有列头信息)

  1. 001,张三,85,90,78
  2. 002,李四,78,85,92
  3. 003,王五,92,88,80

CSV文件可以使用文本编辑器(比如notepad++)或电子表格软件(比如office excel)打开,或者将其导入到相应的应用程序(比如python pandas frame)中进行数据分析和处理。

C++开源csv解析库csv-parse

rapidcsv

GitHub - auscanaoy/rapidcsv: C++ CSV parser library

 

使用案例:

colhdr.csv:

  1. Open,High,Low,Close,Volume,Adj Close
  2. 64.529999,64.800003,64.139999,64.620003,21705200,64.620003
  3. 64.419998,64.730003,64.190002,64.620003,20235200,64.620003
  4. 64.330002,64.389999,64.050003,64.360001,19259700,64.360001
  5. 64.610001,64.949997,64.449997,64.489998,19384900,64.489998
  6. 64.470001,64.690002,64.300003,64.620003,21234600,64.620003

c++代码:

  1. #include <iostream>
  2. #include <vector>
  3. #include "rapidcsv.h"
  4. int main()
  5. {
  6. rapidcsv::Document doc("examples/colhdr.csv");
  7. std::vector<float> col = doc.GetColumn<float>("Close");
  8. std::cout << "Read " << col.size() << " values." << std::endl;
  9. }

 更多例子,可以参考GitHub - auscanaoy/rapidcsv: C++ CSV parser library

Vince's CSV Parser

GitHub - vincentlaucsb/csv-parser: A modern C++ library for reading, writing, and analyzing CSV (and similar) files. 

 使用案例:

  1. #include <csv.hpp>
  2. struct GerberHoleInfo{
  3. double xInch;
  4. double yInch;
  5. double rInch;
  6. double xPixel;
  7. double yPixel;
  8. double rPixel;
  9. double inch2PixelRatio = 360.0;
  10. };
  11. std::vector<GerberHoleInfo> parseGerberHoleInfos(const std::string& gerberFilePath, double inch2PixelRatio){
  12. std::vector<GerberHoleInfo> holeInfos;
  13. csv::CSVFormat format;
  14. format.delimiter(',').quote(false).no_header();
  15. csv::CSVReader reader(gerberFilePath, format);
  16. for(csv::CSVRow& row:reader){
  17. double x = std::stod(row[0].get());
  18. double y = std::stod(row[1].get());
  19. double r = std::stod(row[2].get());
  20. GerberHoleInfo holeInfo;
  21. holeInfo.xInch = x;
  22. holeInfo.yInch = y;
  23. holeInfo.rInch = r;
  24. holeInfo.inch2PixelRatio = inch2PixelRatio;
  25. holeInfo.xPixel = x * inch2PixelRatio;
  26. holeInfo.yPixel = y * inch2PixelRatio;
  27. holeInfo.rPixel = r * inch2PixelRatio;
  28. holeInfos.push_back(holeInfo);
  29. }
  30. return holeInfos;
  31. }

 更多例子,可以参考:GitHub - vincentlaucsb/csv-parser: A modern C++ library for reading, writing, and analyzing CSV (and similar) files.

CSV Parser

GitHub - AriaFallah/csv-parser: Fast, header-only, extensively tested, C++11 CSV parser

CSVparser

GitHub - rsylvian/CSVparser: C++ parser for CSV file format

fast-cpp-csv-parser 

GitHub - ben-strasser/fast-cpp-csv-parser: fast-cpp-csv-parser

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/959216
推荐阅读
相关标签
  

闽ICP备14008679号