[英]Counting the number of data points in a line from ifstream
我有一堆數據文件需要讀入某個多維容器,所有這些容器都具有以下格式:
a1,a2,a3,...,aN,
b1,b2,b3,...,bN,
c1,c2,c3,...,cN,
................
z1,z2,z3,...,zN,
從上一個問題中我知道,可以通過以下方法來快速計算文件中的總行數:
std::ifstream is("filename");
int lines = std::count(std::istreambuf_iterator<char>(is), std::istreambuf_iterator<char>(), '\n');
這讓我知道要讀取的數據集總數為z,每個z包含N個數據點。 下一個挑戰是計算每行的數據值數量,對此我可以執行以下操作:
std::ifstream is("filename");
std::string line;
std::getline(is, line);
std::istringstream line_(line);
int points = std::count(std::istreambuf_iterator<char>(line_), std::istreambuf_iterator<char>(), ',');
我可以確信每個文件每行具有相同數量的數據值。 我的問題是,是否有一種更好/更快的方法來實現上述目標,而又不必使用getline並將單個行轉儲到字符串中? 我想知道是否可以使用流緩沖區來實現,但是經過一些搜索后,對我來說還不是很清楚。
任何幫助將不勝感激,謝謝!
如果需要使用
int points = std::count(std::istreambuf_iterator<char>(line_), std::istreambuf_iterator<char>(), ',');
對於每行文本,我建議您尋找一種提高效率的方法。
但是,您說:
我可以確信每個文件每行具有相同數量的數據值。
這意味着,您可以從第一行計算出點數,並假定它對其余行有效。
我不會一次打電話就流汗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.