C++获取文件行总数
C++ Get Total File Line Number
是否有一个函数可以用来获取C++
中的总文件行号,还是必须通过for
循环手动完成?
#include <iostream>
#include <ifstream>
ifstream aFile ("text.txt");
if (aFile.good()) {
//how do i get total file line number?
}
文本.txt
line1
line2
line3
我会这样做:
ifstream aFile ("text.txt");
std::size_t lines_count =0;
std::string line;
while (std::getline(aFile , line))
++lines_count;
或者简单地说,
#include<algorithm>
#include<iterator>
//...
lines_count=std::count(std::istreambuf_iterator<char>(aFile),
std::istreambuf_iterator<char>(), 'n');
没有这样的函数。计数可以通过读取整行来完成
std::ifstream f("text.txt");
std::string line;
long i;
for (i = 0; std::getline(f, line); ++i)
;
关于作用域、变量i
的说明必须在for
之外,如果你想在循环后访问它。
您也可以按字符阅读并检查换行
std::ifstream f("text.txt");
char c;
long i = 0;
while (f.get(c))
if (c == 'n')
++i;
我担心你需要自己这样写:
int number_of_lines = 0;
std::string line;
while (std::getline(myfile, line))
++number_of_lines;
std::cout << "Number of lines in text file: " << number_of_lines;
有一个计数器,初始化为零。逐一读取行,同时增加计数器(行的实际内容不感兴趣,可以丢弃)。完成后,没有错误,计数器是行数。
或者,您可以将所有文件读入内存,并计算大块文本"数据"中的换行符。
https://stackoverflow.com/a/19140230/9564035 中的解决方案很好,但不提供相同的输出。如果要计算仅以'n'
结尾的行
#include<algorithm>
#include<iterator>
//...
ifstream aFile ("text.txt");
lines_count=std::count(std::istreambuf_iterator<char>(File),
std::istreambuf_iterator<char>(), 'n');
如果您还想计算未以'n'
结尾的行(最后一行),则应使用 getLine 解决方案
ifstream aFile ("text.txt");
std::size_t lines_count =0;
std::string line;
while (std::getline(aFile , line))
++lines_count;
<小时 />请注意,如果您以前从文件中读取,则应将指针设置为文件开头以file.seekg(std::ios_base::beg);
快速的方法,然后高于 P0W 的解决方案每 100MB 节省 3-4 秒
std::ifstream myfile("example.txt");
// new lines will be skipped unless we stop it from happening:
myfile.unsetf(std::ios_base::skipws);
// count the newlines with an algorithm specialized for counting:
unsigned line_count = std::count(
std::istream_iterator<char>(myfile),
std::istream_iterator<char>(),
'n');
std::cout << "Lines: " << line_count << "n";
return 0;
只需复制它并运行。
#include <stdio.h>
#include <bits/stdc++.h>
using namespace std;
int main()
{
fstream file;
string filename = "sample input.txt";
file.open(filename.c_str()); //read file as string
int lineNum = 0;
string s;
if (file.is_open())
{
while (file.good())
{
getline(file, s);
lineNum++;
cout << "The length of line number " << lineNum << " is: " << s.length() << endl;
}
cout << "Total Line : " << lineNum << endl;
file.close();
}
return 0;
}
相关文章:
- C++ - 忽略并从其他文件获取数据
- 为什么从文件获取图标时应用程序有时会崩溃?
- 如何在 c++ 窗口中将参数和返回的退出值传递到批处理文件/从批处理文件获取返回的退出值
- Qt .pro 文件获取 Qtkit 名称
- 提升属性树:如何使用xml文件获取子树的子级
- 从C 中的二进制文件获取整数值时
- 如何在Windows上绕过主机文件获取真实的IP地址
- 如何使用 CPP/C# 从 VHDX 文件获取文件(或文件系统)
- 从读取到对象指针数组的文件获取段错误
- 是否可以从IOS项目中的cpp文件获取文件路径
- 将数据从头文件获取到源文件中的非成员函数中
- 从两个不同的文件获取输入时,输入会发生变化
- 从文件 C++ 获取整数
- 通过在 C++ 中使用发布模式二进制文件获取崩溃原因
- C++ 将值从文件获取到数组中
- 使用HTTP上载文件.获取错误:-HttpSendReuest 12005
- 正在从外部文件获取输入
- 读/写同一个文件(获取gmon.out)
- 从二进制文件获取输入时发生访问冲突错误
- 从特定文件获取函数指针