我想查找文本文件中的行数,但在执行istreambuf_iterator
后我无法读取内容。
std::ifstream loadfile("file.txt");
line_count = std::count(std::istreambuf_iterator<char>(loadfile), std::istreambuf_iterator<char>(), '\n');
double val;
loadfile >> val ;
我做错了什么?
答案 0 :(得分:2)
你读到文件的末尾,所以没有值可读也就不足为奇了。如果您打算从文件的开头读取该值,则需要重置读指针:
loadfile.seekg( 0, std::ios::beg );
执行这样的行计数然后返回读取数据有点不寻常,因为它无法转换为通用流(例如,如果您的程序要接收标准输入的数据)。如果解析是基于行的,则通常使用以下模式:
int line_count = 0;
for( std::string line; std::getline( loadfile, line ); )
{
++line_count;
std::istringstream iss( line );
// Read values on current line from 'iss'.
}
// Now that you're finished, you have a line count.