C++读取CSV表格

其实原始的问题是要对excel的文件进行处理的。看来一下需要处理的问题的文件的内容,结构很简单。
这里写图片描述
一瞬间懒癌发作,直接把文件格式转成了csv。
CSV是一种Excel表格的导出格式,在Excel表格的菜单栏中点击文件->另存为会弹出一个文件夹浏览窗口,在下拉框中可以选择保存格式,其中有一个就是.CSV(逗号分隔符)选项。

CSV表格很官方的规则:
1 开头是不留空,以行为单位。
2 可含或不含列名,含列名则居文件第一行。
3 一行数据不垮行,无空行。
4 以半角逗号(即,)作分隔符,列为空也要表达其存在。
5 列内容如存在半角逗号(即,)则用半角引号(即”“)将该字段值包含起来。
6 列内容如存在半角引号(即”)则应替换成半角双引号(”“)转义,并用半角引号(即”“)将该字段值包含起来。
7 文件读写时引号,逗号操作规则互逆。
8 内码格式不限,可为 ASCII、Unicode 或者其他。
9 不支持特殊字符

CSV表格的用途:
CSV表格也相当于关系数据库中的二维表,但是他并不支持SQL语句的查询,只能通过一些手段将表格内容存入合适的数据结构中便于查询。

我们可以通过文本编辑器看下里面的文本数据:

卡号,密码,面值,地点限制,过期时间
16G10001,2333333,199,,2017123108:00
,,,,

1、从文本数据我们可以很直观得看到每一行对应一组数据。
2、每一组数据的元素之间用逗号分隔。

这里我们就可以直接对csv进行一般文件的读取,但是为了获取有意义的信息,每次读取一行:

void split(string str,string separator,vector<string> &result)
{//对每一行以逗号为分隔符进行分割
        result.clear();
        int cutAt;
        while( (cutAt = str.find_first_of(separator)) != str.npos )
        {
            if(cutAt > 0)
            {
                result.push_back(str.substr(0, cutAt));
            }
            str = str.substr(cutAt + 1);
        }
        if(str.length() > 0)
        {
            result.push_back(str);
        }
}
    ifstream file ( "./template/GPLT.csv" ); 
    string row;
    getline(file,row);//剔除首部
    vector<string> infRow;
    int typeChoose;
    while ( file.good() )
    {
        getline(file,row);
        split(row,",",infRow);
        if(infRow.size())//有效的数据
        {
            //doSomething
        }
    }
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值