C++的一个split小程序以及csv读取方式

本文介绍了使用C++处理和解析CSV文件的方法,包括自定义split函数去除分隔符及直接利用getline函数读取特定字段。

主要是用来处理数据的,多用于读取csv文件,比如说将123,456,789,000去除逗号变成123 456 789 000:

#include <iostream>
#include <vector>
#include <string>
using namespace std;

vector<string> split(string str, string pattern){
    int pos;
    vector<string> result;
    str += pattern;
    int size = str.size();
    for (int i=0; i<size; ++i){
        pos = str.find(pattern, i);
        if (pos < size) {
            string s = str.substr(i, pos-i);
            result.push_back(s);
            i = pos + pattern.size()-1;
        }
    }
    return result;
}

int main(){

    string s = "123,456,789,000";
    string pattern = ",";
    vector<string> strs = split(s,pattern);
    for(int i = 0 ;i < strs.size();i++)
    {
        cout << strs[i].c_str() <<endl;
    }

    return 0;
}

结果:
这里写图片描述

不过如果是读取csv文件也不必要非要重新写一个split函数,因为getline函数本来就有读取到某个字符时跳过去的功能:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
const char* DATA_TRAIN_PATH = "./Dataset/Datasetc/Datac_train.csv";
const int COUNT = 10;

void get_feature() {
    ifstream fin;
    fin.open(DATA_TRAIN_PATH);
    int i = 0 ;
    while(i<COUNT){
        string line;
        getline(fin, line,',');
        i++;
        cout << line <<endl;
    }
    fin.close();
}

int main(){
    get_feature();
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值