實(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é)果