c++读取csv文件

       目前任务需要处理大量excel表格,为便于处理转化为csv格式。csv是一种以半角逗号和换行符作为分割的excl表格格式,用记事本直接打开便很清楚的看到内部构造。之前曾经用C#处理,比较方便,直接将csv读取为DataTable格式进行处理,网上有现成代码。窃以为应该多练练c++,就试一下。菜鸟一个,只作为记录:

c++读取csv文件_第1张图片

 标头.h      

#include 
#include 
#include 
using std::string;
using std::vector;
class Csv
{
public:
	vector > table;    //存储表格结构的二维vector
	int RowsCount;
	int ColumnsCount;
	Csv(char* filename)
	{
		FILE *fp; 
		char StrLine[1024];             //每行最大读取的字符数
		if((fp = fopen(filename,"r")) == NULL) //判断文件是否存在及可读
		{ 

		} 
		vector > map;
		while (!feof(fp)) 
		{ 
			vector  row;
			fgets(StrLine,1024,fp);  //读取一行
			//每一行根据逗号再进行分割
			const char * split = ","; 
			char * p; 
			p = strtok (StrLine,split); 
			while(p!=NULL) { 
				row.push_back(p);    //每行每个元素加入行row中
				p = strtok(NULL,split); 
			} 
			ColumnsCount = row.size();
			map.push_back(row);    //每一行row加入map中
		} 	
		RowsCount = map.size();
		table = map;

	};

};
源文件:
#include 
#include "标头.h"
using namespace std;

int main()
{
	char filename[] = "E:\\测试\\ComTest.CSV"; //文件名
	Csv csv(filename);
//元素显示测试:
	for(auto it1 = csv.Rows.begin(); it1 != csv.Rows.end(); ++it1)
	{
		
		for(auto it2 = it1 -> begin(); it2 != it1 -> end(); ++it2)
		{
			cout << it2 -> data() << "\t";
		}
		cout << endl;
	}

	getchar();
	return 0;
}

你可能感兴趣的:(c++)