如何計算使用標準類fstream
和ifstream
的行數?如何在C++中計算文件的行數?
回答
如何: -
std::ifstream inFile("file");
std::count(std::istreambuf_iterator<char>(inFile),
std::istreambuf_iterator<char>(), '\n');
這就是我所說的,如果你沒有在我面前說過。儘管如此,你的方式稍微好一點... +1 – fingerprint211b 2010-06-18 20:39:38
只記得一些事情,如果最後一行沒有\ n? – fingerprint211b 2010-06-18 20:42:48
@ fingerprint211b:添加一個結果:-)總是有這種權衡,無論你在文件結尾處有換行符。 – Abhay 2010-06-18 20:44:45
您逐行讀取文件。 計算您閱讀的行數。
這聽起來像一個_huge_過度複雜! ;-) – 2010-06-18 20:34:35
int numLines = 0;
ifstream in("file.txt");
//while (! in.eof())
while (in.good())
{
std::string line;
std::getline(in, line);
++numLines;
}
還有就是你如何對待該文件的最後一行,如果它不以回車結束的問題。取決於你在做什麼,你可能想要計算它,而你可能不會。這段代碼統計了它。
'while(!in.eof())'<--- NOOOOO!如果有任何類型的文件讀取失敗,這會給垃圾。把'std :: getline'作爲時間的條件。 – 2010-06-18 20:36:55
編輯後它仍然無效,因爲如果'std :: getline'失敗,則增加行數,並且不檢查它是否成功,直到後面。將'std :: getline'移到while的條件。 – 2010-06-18 20:46:04
這是克雷格·賴特W.的答案的正確版本:
int numLines = 0;
ifstream in("file.txt");
std::string unused;
while (std::getline(in, unused))
++numLines;
std :: getline(in,std :: string()) - 將一個非const引用綁定到一個臨時對象不是合法的C++。 – Pietro 2013-04-08 14:16:02
@Pietro:好點。固定! – 2013-04-08 21:25:10
分割文件的大小由平均每行的字符!
以下@Abhay一個完整的代碼,我已經做了
如何確定每行不讀取文件的平均字符數?如果你計算的字符,你可能只是計數換行符;這種無效的答案。 – 2010-06-19 01:27:31
int aNumOfLines = 0;
ifstream aInputFile(iFileName);
string aLineStr;
while (getline(aInputFile, aLineStr))
{
if (!aLineStr.empty())
aNumOfLines++;
}
return aNumOfLines;
核方法:
size_t count_line(istream &is)
{
// skip when bad
if(is.bad()) return 0;
// save state
std::istream::iostate state_backup = is.rdstate();
// clear state
is.clear();
std::istream::streampos pos_backup = is.tellg();
is.seekg(0);
size_t line_cnt;
size_t lf_cnt = std::count(std::istreambuf_iterator<char>(is), std::istreambuf_iterator<char>(), '\n');
line_cnt = lf_cnt;
// if the file is not end with '\n' , then line_cnt should plus 1
is.unget();
if(is.get() != '\n') { ++line_cnt ; }
// recover state
is.clear() ; // previous reading may set eofbit
is.seekg(pos_backup);
is.setstate(state_backup);
return line_cnt;
}
它不會改變原始文件流狀態,包括「\ N'-二小姐的情況處理爲最後一行。
- 1. 計算文件中的行數 - C
- 2. 如何計算C++中每行文本文件的字數?
- 3. 如何計算使用C++的文件中的行數?
- 4. 如何計算文件組的行數?
- 5. 如何用C#中的文本文件中的數字進行數學計算?
- 6. c#我如何計算文本文件中的行
- 7. 如何計算html文件中的表中的行C#
- 8. 如何計算文件中的行值?
- 9. 計算文本文件中的行數
- 10. 計算文件中的字符數C#
- 11. 如何計算在Eclipse中運行java文件的次數?
- 12. 你如何計算文件中的整數數量? (C++)
- 13. 如何計算C中文件的空行?
- 14. 如何計算文本文件中的空行數?
- 15. 如何計算Octave文本文件中的行數?
- 16. 用於計算文件中行數的C函數
- 17. 計算文件中的行數
- 18. Node.js:計算文件中的行數
- 19. 計算文件中的行數 - Scala
- 20. 計算文件中的行數
- 21. Informatica:如何計算informatica中平面文件中的行數
- 22. 如何使用C來計算文件中的字節數?
- 23. 最緊湊的方法來計算C++文件中的行數
- 24. 如何計算行列C數組?
- 25. 在C中計數文件行#
- 26. C++使用類來計算文件中的行數
- 27. 在文本文件中計算新行
- 28. 如何計算php文件中的行數?
- 29. 如何計算兩個文件中的行數
- 30. 如何計算java文件中的註釋行數?
氣味像家庭作業 - 你到目前爲止嘗試過什麼? – KevinDTimm 2010-06-18 20:24:15
從'1'開始,併爲文件中的每一行添加1。 – 2010-06-18 20:25:44
@Noah:空文件有一行? – 2010-06-18 21:39:33