我有一个包含数千行的文件,每行代表一行。每行的字符数是可变的。我正在绘制这些线条,但我只想绘制每一条线条。我知道我可以这样做:
for (int k = 0; k < 9; k++) {
File.getline(buf, 1024);
}
但是我想知道是否有办法在没有阅读其间的所有行的情况下执行此操作。 这似乎是一种浪费。
答案 0 :(得分:3)
一般来说,没有。除非你的线是固定的长度或者其中有关于下一行的位置的一些提示,否则你别无选择,只能扫描文件换新线并扔掉插入的字符。
答案 1 :(得分:2)
如果线条长度固定,则可以使用seekg()
。否则,不!有些东西必须通过文件查找换行符。
答案 2 :(得分:2)
如果您要多次从同一个文件中进行绘图,则可以构建一个索引,告诉每行开始的位置,并在绘制时查找所需的行。你需要这样一个索引来向前移动N行(其中N> 1)。
即使您确实构建了索引,如果代码在没有它的情况下速度一样快也不要感到惊讶(或者,它可能更快,但是如此小的余量并不重要)。除非你的线很长,否则很有可能(大多数时候)你不会寻求从磁盘上读取的下一块数据,所以在它下面,你最终会阅读无论如何顺序通过文件。
答案 3 :(得分:0)
是。这只是调用File.ignore(MAX_INT, '\n')
。