本程序可以读入任意行和列的csv文件,保存在Data这个数组内部
本人找寻CSDN上所有其他类似功能程序,发现没有一个满足我的要求
于是自行编写,可以说领先超越CSDN所有其他类似功能程序,实用性极强
#include <iostream>
#include <fstream>
#include <sstream>
#include <typeinfo>
#include <cstring>
using namespace std;
int main()
{
const int col = 18;
const int row = 20;
double *Data = NULL;
Data = (double *)malloc(row * col * sizeof(double));
memset(Data, 0, row * col * sizeof(double));
ifstream inFile("data.csv", ios::in);
string lineStr;
while (getline(inFile, lineStr))
{
stringstream ss(lineStr);
string str;
while (getline(ss, str, ','))
{
double num = stod(str);
*Data = num;
cout << *Data << ' ';
Data++;
}
cout << endl;
}
return 0;
}
本代码中最重要的部分为
while (getline(inFile, lineStr))
{
stringstream ss(lineStr);
string str;
while (getline(ss, str, ','))
{
double num = stod(str);
*Data = num;
cout << *Data << ' ';
Data++;
}
cout << endl;
}
首先是使用getline(inFile, lineStr)把CSV文件的每一行吃进去,放在lineSrt中;
下一步利用while (getline(ss, str, ‘,’)),将ss这个字符串流根据“,”隔开,即把每一个数据放到str里;
最后是stod(str)这个函数,可以把str这个字符串转换成double数据,存入Data中;
注意:使用stod这个函数,要设置编译器支持c++11标准,这个自行查一下就好,在dev中很容易设置,使用g++编译的话,需要在g++ 后面加-std=c++11;