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

直接上图

原始数据

C++读写csv格式文件-获取指定数据_第1张图片
这是20行数据

下面是解析出来的数据

读取第9个数据
C++读写csv格式文件-获取指定数据_第2张图片

程序源码,有详细注释

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 
#include 
#include 
#include 
#include//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

你可能感兴趣的:(#,C++读写文件,c++)