C++讀CSV檔案,處理資料

來源:互聯網
上載者:User

標籤:site   return   blog   城市   cto   標頭檔   判斷   error   char   

//讀寫

#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;
}

C++讀CSV檔案,處理資料

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.