C++讀取csv數(shù)據(jù)
這幾天,剛好我同事問(wèn)我QT上面怎么讀取csv文件,并輸出起始點(diǎn)和終點(diǎn)x,y坐標(biāo)值(起點(diǎn)、終點(diǎn)、起點(diǎn)、終點(diǎn)......);這是她的程序代碼和對(duì)應(yīng)的csv文件:

她的程序讀取數(shù)據(jù)的時(shí)候,只能讀到x值,并且會(huì)跳行,于是讓她詳細(xì)截圖了一下讀取CSV的程序代碼:

針對(duì)代碼,可以發(fā)現(xiàn),她寫(xiě)的代碼還是有很多錯(cuò)誤的地方,此處就先不講具體錯(cuò)誤在哪里了,
如果小伙伴有興趣,對(duì)數(shù)據(jù)處理有基礎(chǔ),可以試試找找其中錯(cuò)誤。
由于時(shí)間關(guān)系,我先貼出可以實(shí)現(xiàn)的代碼:
#include <iostream>
#include<string>
#include<vector>
#include<fstream>
#include<sstream>
?
using namespace std;
?
int main()?
{
? ? ?ifstream inFile("/home/czh/test_1.csv");
? ? ? string lineStr;
? ? ? vector<vector<string>> strArray;
? ? ? getline(inFile,lineStr);? ? //跳過(guò)第一行
? ? ? while (getline(inFile, lineStr)) {
? ? ? ? ? stringstream ss(lineStr);
? ? ? ? ? ?string str;
? ? ? ? ? ?vector<string> lineArray;
? ? ? ? ? ?while (getline(ss, str, ',')){
? ? ? ? ? ? ? ?lineArray.push_back(str);
? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?strArray.push_back(lineArray);? //添加數(shù)據(jù)到數(shù)組中
? ? ? ? ?}
? ? ? ? ?
? ? ? ?//讀取數(shù)據(jù)
? ? ? ? int j =1;
? ? ? ? for(int i =0;i<strArray.size();i++)
? ? ? ? ?{
? ? ? ? ? ? ?if(j%2 ==1){
? ? ? ? ? ? ? ? ?double startpoint_x = stod(strArray[i][0]);
? ? ? ? ? ? ? ? ?double startpoint_y = stod(strArray[i][1]);
? ? ? ? ? ? ? ? ?cout << "start_x ="<< startpoint_x<<","<<"start_y ="<<startpoint_y<<endl;
? ? ? ? ? ? ?}
? ? ? ? ? ? ?else if(j%2 == 0){
? ? ? ? ? ? ? ? ?double startpoint_x = stod(strArray[i][0]);
? ? ? ? ? ? ? ? ?double startpoint_y = stod(strArray[i][1]);
? ? ? ? ? ? ? ? ?cout << "end_x ="<< startpoint_x<<","<<"end_y ="<<startpoint_y<<endl;
? ? ? ? ? ? ?}
? ? ? ? ? ? ?j++;
? ? ? ? ?}
}
最終實(shí)現(xiàn)的效果如下所示:

有興趣大家可以留言,一起討論一下,一起學(xué)習(xí)!