2016-12-06 32 views
-2

我想在下面的方式來讀取在C文本文件++讀取的線的文本文件的:從在C++中的特定位置

  1. 忽略整個第一線,因爲它是簡單地指作一介紹。
  2. 只能從特定位置讀取以下行。

讀數的起始位置是固定的,並且對於每一行都保持不變;然而,之後的數字可能會變長。我需要將所有這些數字從第2行保存到第n行。 目前我可以通過getline閱讀常規2D陣列。 我該如何解決這些問題?

了線我想讀的可能是一個例子:

PERSON1:25 988.3 0.0023 7

回答

0

要將文件設置爲一個位置,使用std::ifstream::seekg()

要將文件設置到行的開頭,您必須讀取並計算行結束符。許多文本文件具有可變長度的文本行。

+0

請問如何實現'seekg()'?目前,我使用帶'getline'的'while'循環來讀取僅包含數字的數組。 – MusashiButter

+0

On方法是使用'std :: getline'讀取整個文件;但在使用'std :: getline'之前,使用'std :: ifstream :: tellg()'來獲取文本行的文件位置。將文件位置存儲在'std :: vector'中。這將允許您檢索文件中每行的起始位置。 –

0

我該如何解決這些問題?

除非可以確保第一行之後的所有數據行都是相同的長度,否則不能這樣做。

如果你不能確保,那麼你所能做的只是通讀所有前面的行。

過去我採用的一種替代方法是以二進制格式在輔助文件中生成行索引位置的索引(以便我可以直接跳到該文件中的正確位置),並將其用於跳轉到文本文件中的正確位置。當然,這意味着每次更換/修改數據文件時都需要重新生成索引文件。