1撒强、C++ 讀取txt文件
#include <fstream>
#include <iostream>
template<class T>
int readTxt(string file, vector<T>& var)
{
if (var.size() != 0)
{
var.clear();
}
ifstream infile;
infile.open(file.data()); //將文件流對象與文件連接起來
assert(infile.is_open()); //若失敗,則輸出錯誤消息,并終止程序運(yùn)行
string s;
while (getline(infile, s))
{
var.push_back(stof(s));
}
infile.close(); //關(guān)閉文件輸入流
return 0;
}
2、C++ 讀取csv文件
附上一個分割字符串的功能函數(shù)拾徙,根據(jù)自己情況修改吧
#include <fstream>
#include <iostream>
int readCSV(std::string& file_path, std::vector<double>& beta_mois, std::vector<double>& beta_om, std::vector<double>& beta_tn,
std::vector<double>& x_mean_mois, std::vector<double>& x_mean_om, std::vector<double>& x_mean_tn)
{
std::vector<std::string> row;
std::string line;
std::ifstream in(file_path.c_str());
if (in.fail()) { std::cout << "File not found" << std::endl; return 0; }
while (getline(in, line) && in.good())
{
file_to_string(row, line, ','); //把line里的單元格數(shù)字字符提取出來洲炊,“,”為單元格分隔符
beta_mois.emplace_back(stof(row[0]));
beta_om.emplace_back(stof(row[1]));
beta_tn.emplace_back(stof(row[2]));
x_mean_mois.emplace_back(stof(row[3]));
x_mean_om.emplace_back(stof(row[4]));
x_mean_tn.emplace_back(stof(row[5]));
}
in.close();
return 1;
}
void file_to_string(std::vector<std::string>& record, const std::string& line, char delimiter)
{
int linepos = 0;
char c;
int linemax = line.length();
std::string curstring;
record.clear();
while (linepos < linemax)
{
c = line[linepos];
if (c != delimiter) {
curstring += c;
}
else if (c == delimiter && curstring.size()) {
record.push_back(curstring);
curstring = "";
}
++linepos;
}
if (curstring.size())
record.push_back(curstring);
return;
}