把csv文件中 空格 和出错信息“#N/A”整行信息删除
最终只保留 StuNum(学号)、class(班级)、Dorm(宿舍)三列(删除其他三列)
部分内容如下:
结果如图
struct TcsvMake
{
int id;
string Name;
int StuNum;
int class;
int Dorm;
int Age;
};
typedef list<TcsvMake> LISTcsvMake;
请大神指点
把csv文件中 空格 和出错信息“#N/A”整行信息删除
最终只保留 StuNum(学号)、class(班级)、Dorm(宿舍)三列(删除其他三列)
部分内容如下:
结果如图
struct TcsvMake
{
int id;
string Name;
int StuNum;
int class;
int Dorm;
int Age;
};
typedef list<TcsvMake> LISTcsvMake;
请大神指点
// CFileRead.h
#include <iostream>
#include <fstream>
#include <sstream>
#include <algorithm>
#include <cstring>
#include <list>
using namespace std;
struct TcsvMake
{
int id;
string Name;
int StuNum;
int class;
int Dorm;
int Age;
};
typedef list<TcsvMake> LISTcsvMake;
class CFileRead
{
public:
void readCSV(ifstream &input);
LISTcsvMake m_csvMakeList;
};
//CFileRead.cpp
#include<iostream>
#include <list>
#include"CFileRead.h"
#include "string.h"
#pragma warning(disable:4996)
using namespace std;
void CFileRead::readCSV(ifstream &input)
{
string csvLine;// 从输入流中读取每一行
getline(input, csvLine);
while (getline(input, csvLine))
{
TcsvMake tcsv;
char *csv = (char*)csvLine.data();
if (NULL != csv)
{
string id = strtok(csv, ",");
istringstream csvStream(id);
csvStream >> tcsv.id;
string name = strtok(NULL, ",");
istringstream CsvStream(name);
CsvStream >> tcsv.Name;
string stuNum = strtok(NULL, ",");
istringstream cSvStream(stuNum);
cSvStream >> tcsv.StuNum;
string class = strtok(NULL, ",");
istringstream csVStream(class);
csVStream >> tcsv.class;
string dorm = strtok(NULL, ",");
istringstream CSvStream(dorm);
CSvStream >> tcsv.Dorm;
string age = strtok(NULL, ",");
istringstream CSVStream(age);
CSVStream >> tcsv.Age;
m_csvMakeList.push_back(tcsv);
}
}
}