有没有一种方法可以控制std :: fstream中的Cursor Point?

时间:2020-09-29 06:38:45

标签: c++ c++17 fstream

我正在从.txt文件中读取大数据,例如1000-5000个人数据。他们以合法的方式保存在文件中,我可以轻松读取数据。但要使其更简单,我正在寻找控制文件光标点的方法。

例如,在console app中,您可以使用VT100转义序列,例如\033[3A(3行)\033[2D(左2个字母)\0337(保存位置)

那么有没有办法像这样控制光标点?

1 个答案:

答案 0 :(得分:2)

std::fstream可以看作是单个字节的线性流。因此,无法使用“ {cursor up”之类的东西,因为std::fstream不了解文件中的行。

您所能做的就是询问您当前正在阅读tellg或用tellp书写的当前位置。

保持这些位置后,您可以返回seekgseekp

如果愿意,您可以在读取文件时存储当前行位置,并在以后使用此存储位置进行导航。另外,如果您以随机方式修改文件而又不是那么大,则可以将其完全读取为您选择的数据结构,在内部修改数据并稍后再写回。