實(shí)現(xiàn)用C++讀取.csv文件度秘,并存到STL中
.csv文件即將表格數(shù)據(jù)轉(zhuǎn)換為用分隔字符分隔的值(也可以不是逗號(hào))
頭文件:
#include <fstream>
#include <string>
#include <sstream>
簡(jiǎn)單的demo
int main(){
vector<vector<int>> user_arr;
ifstream fp("xxx/user_data.csv"); //定義聲明一個(gè)ifstream對(duì)象,指定文件路徑
string line;
getline(fp,line); //跳過列名,第一行不做處理
while (getline(fp,line)){ //循環(huán)讀取每行數(shù)據(jù)
vector<int> data_line;
string number;
istringstream readstr(line); //string數(shù)據(jù)流化
//將一行數(shù)據(jù)按'权悟,'分割
for(int j = 0;j < 11;j++){ //可根據(jù)數(shù)據(jù)的實(shí)際情況取循環(huán)獲取
getline(readstr,number,','); //循環(huán)讀取數(shù)據(jù)
data_line.push_back(atoi(number.c_str())); //字符串傳int
}
user_arr.push_back(data_line); //插入到vector中
}
return 0;
}
補(bǔ)充:
將字符串類型數(shù)據(jù)轉(zhuǎn)換成 int
類型需要先使用 .c_str()
轉(zhuǎn)成 const char*
類型,再用 atoi()
轉(zhuǎn)成 int
赤赊,如果轉(zhuǎn)為浮點(diǎn)型則 atof()
牡属,long
型則 atol()
等等吵血。
結(jié)果:
.csv文件
輸出結(jié)果