csv形式とは何ですか?
CSV 形式 (カンマ区切り値) は、さまざまなデータ フィールドを区切るための区切り文字としてカンマ (または \t などの他の特定の文字) を使用する一般的なスプレッドシート ファイル形式です。CSV ファイルは通常、人事情報や製品情報などの表形式のデータを保存するために使用されます。
CSV ファイルには次の特徴があります。
- プレーンテキスト形式で、読みやすく、編集しやすい。
- 通常、最初の行は各列のフィールド名ですが、列ヘッダーがない場合もあります。
- 各行はデータ レコードを表し、各列はデータ フィールドを表します。
- データの分析と処理を容易にするための並べ替えおよびフィルター機能をサポートします。
CSV ファイルの拡張子は通常、「data.csv」などの「.csv」です。
カンマ区切りの CSV ファイルの例をいくつか示します。
1. 人事情報テーブル(カンマ区切り)
姓名,年龄,性别,地址
张三,25,男,北京
李四,30,女,上海
王五,28,男,广州
2. 製品情報テーブル(\t区切り)
商品编号 商品名称 单价 库存
001 电视 3000 50
002 冰箱 4000 30
003 洗衣机 2000 20
3. 生徒の成績表 (カンマ区切り、列ヘッダー情報なし)
001,张三,85,90,78
002,李四,78,85,92
003,王五,92,88,80
CSV ファイルは、テキスト エディター (notepad++ など) または表計算ソフトウェア (office Excel など) を使用して開いたり、データ分析や処理のために対応するアプリケーション (Python pandas Frame など) にインポートしたりできます。
C++ オープンソース CSV 解析ライブラリ csv-parse
Rapidcsv
GitHub - auscanaoy/rapidcsv: C++ CSV パーサー ライブラリ
使用例:
Colhdr.csv:
Open,High,Low,Close,Volume,Adj Close
64.529999,64.800003,64.139999,64.620003,21705200,64.620003
64.419998,64.730003,64.190002,64.620003,20235200,64.620003
64.330002,64.389999,64.050003,64.360001,19259700,64.360001
64.610001,64.949997,64.449997,64.489998,19384900,64.489998
64.470001,64.690002,64.300003,64.620003,21234600,64.620003
C++ コード:
#include <iostream>
#include <vector>
#include "rapidcsv.h"
int main()
{
rapidcsv::Document doc("examples/colhdr.csv");
std::vector<float> col = doc.GetColumn<float>("Close");
std::cout << "Read " << col.size() << " values." << std::endl;
}
その他の例については、 GitHub - auscanaoy/rapidcsv: C++ CSV パーサー ライブラリ を参照してください。
Vince の CSV パーサー
GitHub - vincentlaucsb/csv-parser: CSV (および同様の) ファイルの読み取り、書き込み、分析のための最新の C++ ライブラリ。
使用例:
#include <csv.hpp>
struct GerberHoleInfo{
double xInch;
double yInch;
double rInch;
double xPixel;
double yPixel;
double rPixel;
double inch2PixelRatio = 360.0;
};
std::vector<GerberHoleInfo> parseGerberHoleInfos(const std::string& gerberFilePath, double inch2PixelRatio){
std::vector<GerberHoleInfo> holeInfos;
csv::CSVFormat format;
format.delimiter(',').quote(false).no_header();
csv::CSVReader reader(gerberFilePath, format);
for(csv::CSVRow& row:reader){
double x = std::stod(row[0].get());
double y = std::stod(row[1].get());
double r = std::stod(row[2].get());
GerberHoleInfo holeInfo;
holeInfo.xInch = x;
holeInfo.yInch = y;
holeInfo.rInch = r;
holeInfo.inch2PixelRatio = inch2PixelRatio;
holeInfo.xPixel = x * inch2PixelRatio;
holeInfo.yPixel = y * inch2PixelRatio;
holeInfo.rPixel = r * inch2PixelRatio;
holeInfos.push_back(holeInfo);
}
return holeInfos;
}
その他の例については、 GitHub - vincentlaucsb/csv-parser: CSV (および類似の) ファイルの読み取り、書き込み、分析のための最新の C++ ライブラリを 参照してください。
CSVパーサー
GitHub - AriaFallah/csv-parser: 高速、ヘッダーのみ、広範囲にテストされた C++11 CSV パーサー
CSVパーサー
GitHub - rsylvian/CSVparser: CSV ファイル形式用の C++ パーサー