0

ifstreamC++コードでファイルを解析するために使用しています。seekg()and を使用しtellg()てコードの特定の行にジャンプすることができません。

特に、メソッド getLine を使用して、ファイルの特定の位置から行を読み取りたいと考えています。前の反復で保存された位置。

4

2 に答える 2

3

必要な行数をスキップするだけです。それを行う最善の方法は、 std::istream::ignore で文字列を無視することです

for (int currLineNumber = 0; currLineNumber < startLineNumber; ++currLineNumber){
    if (addressesFile.ignore(numeric_limits<streamsize>::max(), addressesFile.widen('\n'))){
        //just skipping the line
    } else {
        // todo: handle the error
    }
}

最初の引数は、抽出する最大文字数です。これが正確に numeric_limits::max() である場合、制限はありません。

パフォーマンスが向上するため、std::getline の代わりに is を使用する必要があります。

于 2015-09-08T09:10:04.167 に答える