C++读CSV文件,处理数据

//读写

#include "global.h"
#include <iostream>
#include <fstream>        //读取文件数据的函数fin的头文件
#include <sstream>        //istringstream 必须包含这个头文件

using namespace std;        
using std::ofstream;
vector<AQIvalue> allSites;
vector<WENDUvalue> allWD;

//模板函数:将string类型变量转换为常用的数值类型(此方法具有普遍适用性)  
template <class Type>
Type stringToNum(const string str){
    istringstream iss(str);
    Type num;
    iss >> num;
    return num;
}

int ReadWENDU(const string  siteFile)
{
    string value;
    ifstream fin;
    fin.open(siteFile, ios::in);
    if (!fin.is_open())
    {
        cout << "read file error: " << siteFile << endl;
    }

getline(fin, value);    //读取文件的一行

int cnt = 0;

while (fin.good())//判断文件是否打开
    {
        cnt++;
        string Anum,Aname,Acity,Ajindu,Aweidu,WENDU1, SHIDU1, FENGSU1, WENDU2, SHIDU2, FENGSU2, WENDU3, SHIDU3, FENGSU3, WENDU4, SHIDU4, FENGSU4 ;
        //string WENDU1, WENDU2, WENDU3, WENDU4, SHIDU1, SHIDU2, SHIDU3, SHIDU4, FENGSU1, FENGSU2, FENGSU3, FENGSU4;
        WENDUvalue B_SITE;

getline(fin, Anum, ‘,‘);
        B_SITE.Anum = Anum;
        getline(fin, Aname, ‘,‘);
        B_SITE.Aname = Aname;
        getline(fin, Acity, ‘,‘);
        B_SITE.Acity = Acity;
        getline(fin, Ajindu, ‘,‘);
        B_SITE.Ajindu = stringToNum<float>(Ajindu);
        getline(fin, Aweidu, ‘,‘);
        B_SITE.Aweidu = stringToNum<float>(Aweidu);

getline(fin, WENDU1, ‘,‘);
        B_SITE.wendu3 = stringToNum<float>(WENDU1);
        getline(fin, WENDU2, ‘,‘);
        B_SITE.shidu3 = stringToNum<float>(WENDU2);
        getline(fin, WENDU3, ‘,‘);
        B_SITE.fengsu3 = stringToNum<float>(WENDU3);

getline(fin, SHIDU1, ‘,‘);
        B_SITE.wendu4 = stringToNum<float>(SHIDU1);
        getline(fin, SHIDU2, ‘,‘);
        B_SITE.shidu4 = stringToNum<float>(SHIDU2);
        getline(fin, SHIDU3, ‘\n‘);
        B_SITE.fengsu4 = stringToNum<float>(SHIDU3);
        allWD.push_back(B_SITE);
    }
    fin.close();
    fin.clear();
    return 0;
}

int ReadAQI(const string siteFile)
{

string value;
    ifstream fin;

fin.open(siteFile, ios::in);
    if (!fin.is_open())
    {
        cout << "read file error: " << siteFile << endl;
    }

//getline(fin, value);    //读取文件的一行

int cnt = 0;

while (fin.good())//判断文件是否打开
    {
        cnt++;
        //cout << "cntAQI: " << cnt << endl;//总共多少个数
        //system("pause");
        string v1, v2, v3, v4,v5,v6;
        AQIvalue A_SITE;

getline(fin, v1, ‘,‘);
        A_SITE.value1 = stringToNum<float>(v1);
        getline(fin, v2, ‘,‘);
        A_SITE.value2 = stringToNum<float>(v2);
        getline(fin, v3, ‘,‘);
        A_SITE.value3 = stringToNum<float>(v3);
        getline(fin, v4, ‘,‘);
        A_SITE.value4 = stringToNum<float>(v4);
        getline(fin, v5, ‘,‘);
        A_SITE.value5 = stringToNum<float>(v5);
        getline(fin, v6, ‘\n‘);
        A_SITE.value6 = stringToNum<float>(v6);

allSites.push_back(A_SITE);
    }
    fin.close();
    fin.clear();

return 0;
}

int main(int argc, char* argv[])
{
        cout << "fuck";
        ReadWENDU("site_Temperature_SpeHumidity_2015_1_1_6.csv");
        int biaoji[1500];
        float outdata[2000][2000];
        for (int i = 0; i < 1497; i++)
            {
                biaoji[i] = 0;        //存取城市之间距离
            }
            
        for (int i = 0; i < 1497; i++)
        {
            for (int j = 0; j < 1497; j++)
            {
                outdata[i][j] = sqrtf((allWD[i].Ajindu-allWD[j].Ajindu)*(allWD[i].Ajindu - allWD[j].Ajindu)+ (allWD[i].Aweidu - allWD[j].Aweidu)*(allWD[i].Aweidu - allWD[j].Aweidu));        //存取城市之间距离
            }
        }

//ofstream outFile;
        //outFile.open(data, ios::out);
        //for (int i = 0; i < wholenum; i++)
        //{
        //    for (int j = 1; j < 6; j++)
        //    {
        //        outFile << data[i][j] << ‘,‘;
        //    }
        //        outFile << data[i][6] << endl;
        //}
        //outFile.close();
        allWD.clear();
        allSites.clear();
        return 0;
}

时间: 2024-08-01 18:22:49

C++读CSV文件,处理数据的相关文章

python#读csv,excel,json数据

1 #读csv,excel,json数据 2 with open('E:\\test\\xdd.csv','r') as f: 3 for line in f.readlines(): 4 print(line) 5 6 7 import pandas 8 df = pandas.read_csv('E:\\test\\xdd.csv') 9 print(df) 10 11 import pandas 12 df = pandas.read_excel('E:\\test\\aa.xls') 1

JavaCSV之读CSV文件

Java在进行数据处理,有时候难免有进行CSV文件的操作,这里采用了JavaCSV读CSV文件. 1.准备工作 (1)第三方包库下载地址:https://sourceforge.net/projects/javacsv (2)相关文档:http://javacsv.sourceforge.net/ 2.使用简单的读操作 (1)引入javacsv包 import com.csvreader.CsvReader; (2)创建文件路径 String file = "src/com/test/csv/t

C++ 把数组数据存入 CSV 文件,以及读取 CSV 文件的数据

1. CSV-百度百科 2. 代码 #pragma once //Microsoft Visual Studio 2015 Enterprise #include<iostream> #include<fstream> #include<string> #include<vector> #include<cstdio> #include<cstdlib> using namespace std; template<typenam

C# 读CSV文件

近期都在处理淘宝商品数据包识别问题,满以为CSV文件就是以行为分割,以逗号为字段分割的文件体系. 自己在编写处理程序时,增加了2个参数: 第一个,字符集,第二,告知处理方法,文件的列在第几行. 同时,对某些生成出来的数据包不规据的,例如生成出2个同名列的,等等文件,做了一定的容错. 满以为这样就OK了,没想到,老革命遇上新问题.原来 CSV文件中还是有转义的,引号即是.这一个处理,导致 程序出现了严重BUG,有一批数据包无法识别.... 现程序已经优化过.本CSV阅读程序,直接将CSV文件转换成

java 关于xlsx(xls) 和 csv 文件的数据解析

1.适用于xlsx 和 xls  <!--xlsx和xls文件pom依赖--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> </dependency> package com.test.demo.util; import org.ap

使用DataX将.csv文件的数据读入Mysql数据库

一:DataX下载 下载页面地址:https://pan.baidu.com/s/10J83j25_ohC4O3XHl9diDQ 提取码: cq6n 二:安装 将下载后的压缩包直接解压安装到电脑上就可以了 三:测试 要想运行datax先要安装python环境: 检验是否存在python环境在cmd中输入python就会知道如果已经有python环境就如下所示出现版本等信息: 进入安装好的datax目录下bin目录中,里面有datax.py文件,可以在cmd中测试(此处是我自己的目录,具体根据自己

OpenRefine导入CSV文件,数据清理后导出JSON格式

第一步:选择要转换的CSV文件. 第二步:选择以逗号分割,并创建项目. 第三步:编辑,去掉特殊字符 Edit Cells > Transform... 第四步:导出文件,选择“Templating”菜单项. 第五步:预览,并导出.

从csv文件导数据到MySQL

导入: load data local infile 'D:\\top-1m.csv'    (注意要加上local)10.21.into table `site` fields terminated by ',' optionally enclosed by '"' escaped by '"' lines terminated by '\n'; 导出: select * from `site` into local outfile 'D:\\top-1m.csv' fields t

python读csv文件中文汉字出现UnicodeDecodeError

出错代码:data = pd.read_csv(fname); 原因:byte 0xcb不能被解码成utf-8编码: 解决方法:指定使用gbk编码 data = pd.read_csv(fname, encoding='gbk'); 原文地址:https://www.cnblogs.com/HITSZ/p/8688616.html