簡體   English   中英

從ifstream計算一行中的數據點數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM