gpt4 book ai didi

c++ - "istreambuf_iterator"后读取文件失败

转载 作者:行者123 更新时间:2023-11-30 03:49:26 26 4
gpt4 key购买 nike

我想在一个文本文件中查找行数,但是在执行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 ;

我做错了什么?

最佳答案

您读到了文件末尾,所以没有剩余值可读也就不足为奇了。如果您打算从文件开头读取该值,则需要重置读取指针:

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.

关于c++ - "istreambuf_iterator"后读取文件失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32516057/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com