[C++] 115 CSVファイルから2次元vectorへ変換

[M1 Mac, Big Sur 11.6.7, clang 13.0.0, NO IDE]

[C++]114の逆変換です。こちらは少しだけ手間取りました。

ところでstd::stringを使う時は<string>をインクルードしがちですが、<iostream>だけでOKです。

#include <iostream>
#include <fstream>
#include <vector>
#include <utility>
#include <sstream>

using std::string; using std::vector;
using std::cout; using std::endl;

int main () {
    string eles;
    string ele;
    vector<vector<string>> vec2D;
  
    // csvファイル指定
    std::ifstream file("test.csv");

    while (getline(file, eles)) {
        vector<string> vec;  
        std::istringstream line(eles);

        while (getline(line, ele, ',')) {
            vec.push_back(ele);
        }
        
        vec2D.push_back(vec);
    }

    // vec2Dの内容確認
    int line_num = 1;
    for (const auto &items : vec2D) {
        for (const auto &item : items) {
            cout << line_num << " " << item << endl;
        }
        line_num += 1;
    }
}
--------------------------------------------------
出力例
--------------------------------------------------
1 cadetblue
1 -
1 0x5F9EA0
2 若竹色
2 わかたけいろ
2 0x68BE8D