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);
一个容器就可以,然后遍历容器就能得到每个值。