分部分读取文件,在最后读取的部分之后继续
Read a file in parts, continue after the last read part
我已经在谷歌上搜索了一段时间,但没有结果,我甚至不确定是否有这个名字。
我的用例是:我有一个大文件,其中包含应该独立处理的文本块。它们都一个接一个地列在文件中,并用分隔符分隔。我想一块一块地读取该文件,对读取的块进行一些操作,然后读取下一个块。类似于遍历一个文件,但不是一次全部读取到内存中。我有java代码,它通过某种BlockGen类来实现可迭代接口,并在客户端代码需要时从以前读取的位置读取文件,但我非常不确定如何在C++中正确实现这一点。
感谢您的帮助。是的,这不是家庭作业!
对于固定块大小,可以使用ifstream::read
在您的情况下,推出自己的BlockGen
:不会太难
给定Block
的定义,例如std::vector<std::string>
和一个类(尽管给定了适当的复制构造函数等)
class BlockGen
{
public:
//boilerplate constructors, taking delimiter between blocks
// opening input etc, etc
Block getNextBlock()
{
Block block;
std::string line;
while( std::getline(input, line) && line!=delimiter)
{
block.push_back(line);
}
return block;
}
private:
std::ifstream input;
std::string delimiter;
};
相关文章:
- 我们如何重新制作程序以打开xml文件并在价格单词之后读取百分比值并更改此值
- 在写依赖性之后,读取了什么
- 按Enter在Enter之后,ReadConsoleInput仅读取第一个符号
- read() 在 select() 阻塞之后,当从生成的进程从管道读取时
- 不会让我在 IF 语句(家庭作业)之后读取用户输入
- EOF 位:读取失败之前或之后
- STL stack top()函数即使在pop()之后也会读取相同的值
- 在dup2()之后使用std::cin从管道读取
- 在 Ctrl+Z (EOF) 之后从 iostream::cin 恢复读取?("ignore"不起作用)
- C++在eof()之后继续读取文件
- C++读取字符串的字符时出错|发生在第10个字符之后
- 在C++中读取一行之后的行不起作用
- 分部分读取文件,在最后读取的部分之后继续
- 读取char中特定行之后的所有内容
- 从file中读取,gcount()总是0,即使在几个file.get()之后
- TCP套接字:传入数据在ack之后(离开TCP读取缓冲区)但在read()/recv()之前的位置
- 仅读取文本文件中的数字并存储在数组中.之后,读取第一行来存储在数组中
- Boost::Asio服务器从客户端读取空白消息,即使在写句柄完成之后
- 如何在读取文本文件时跳到每行最后一个数字之后的下一行
- 正在读取imageStore()之后的texel