C++读写csv格式文件-获取指定数据

直接上图

原始数据

在这里插入图片描述
这是20行数据

下面是解析出来的数据

读取第9个数据
在这里插入图片描述

程序源码,有详细注释

csv.cpp

#include "csv.h"


int main()
{
CSV csv;
csv.open_csv();//--打开文件
csv.creat_new_csv();//--创建一个输出文件
while(csv.infile.peek()!=EOF){//--判断文件结束//--此处必须用peek进行预判文件是否结尾,使用别的会重复读取最后一行
      //--.csv文件用“,”作为分隔符
    csv.vector_clear();//--清空字符串向量
    csv.read_csv();//--读取一行文件
    csv.write_csv();//--讲数据写入新csv文件
     }
csv.file_close();//--关闭所有打开的文件
return 0;
}

csv.h

#ifndef __CSV_H__
#define __CSV_H__

#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include<sstream>//istringstream 必须包含这个头文件
using namespace std;

class CSV{
public:
      char filename[256];//--打开的文件名
      vector<string> fields;//--声明一个字符串向量
      string oneline;//--保存一行数据
      ifstream infile;//--输入文件流
      ofstream outfile;//--输出文件流

public:
      void open_csv(void);//--打开原始数据文件
      void creat_new_csv(void);//--创建一个新的csv文件
      void read_csv(void);//--读取一行原始数据
      void write_csv(void);//--将需要的数据写入新csv文件中
      void vector_clear(void);//--清空字符串向量
      void file_close(void);//--关闭所有打开的文件

};

void CSV::open_csv(void)
{
 cout<<"请输入文件名"<<endl;
 cin>>this->filename;//--写入文件名
 this->infile.open(this->filename); //--打开文件
}

void CSV::creat_new_csv(void)
{
this->outfile.open("out.csv",ios::out|ios::trunc);
}

void CSV::vector_clear(void)
{
this->fields.clear();//--清空字符串向量
}

void CSV::read_csv(void)
{
getline(this->infile,this->oneline);//--读取一行
istringstream tempstream(this->oneline);//将整行字符串line读入到字符串流istringstream中
string field;
 while(getline(tempstream, field, ','))//将字符串流sin中的字符读入到field字符串中,以逗号为分隔符
          {
           this->fields.push_back(field); //将刚刚读取的字符串添加到向量fields中
          }
}

void CSV::write_csv(void)
{
this->outfile<<this->fields[8]<<","<<this->fields[10]<<endl;
}

void CSV::file_close(void)
{
this->infile.close();
this->outfile.close();
}



#endif

  • 6
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值