C++解析csv文件

这里提供一个简单又非常可靠的办法来解析csv文件或字符串:boost的tokenizer库,而且仅需要包含头文件,无需编译。
少废话,直接上代码。

#include<iostream>
#include<boost/tokenizer.hpp>
#include<string>
#include<fstream>

void parse_csv_line(const std::string& s)
{
    boost::tokenizer<boost::escaped_list_separator<char> > tok(s);
    for(boost::tokenizer<boost::escaped_list_separator<char> >::iterator beg=tok.begin(); beg!=tok.end();++beg){
        std::cout << *beg << "\n";
    }
}

int main()
{
    std::string s = "Field 1,\"putting quotes around fields, allows commas\",Field 3";
    //parse_csv_line(s);
    
    std::ifstream ifs(".\\data.csv");
    if (!ifs.is_open())
        return 0;
    while (std::getline(ifs, s))
    {
        parse_csv_line(s);
        std::cout << "--------------\n";
    }
    ifs.close();
}

代码简单到不用解释。boost::tokenizer<boost::escaped_list_separator<char> > tok(s); 一个容器就可以,然后遍历容器就能得到每个值。

posted @ 2021-12-07 12:37  探索者软件  阅读(624)  评论(0编辑  收藏  举报