1

私が理解しているように、テキストモードで使用するtellgseekg、改行のために驚くかもしれませんが、改行なしで奇妙な結果が得られます。次のコードがあります。

#include <fstream>

int main()
{
    using namespace std;

    ifstream file("test.txt");

    char a;
    file >> a;

    ifstream::streampos curPos = file.tellg(); // _Fpos = 1
    ifstream::streampos endPos = file.seekg(0, ios::end).tellg(); // _Fpos = 5
    ifstream::streampos testPos = file.seekg(curPos).tellg(); // _Fpos = 1

    file.putback(a);

    testPos = file.tellg(); // _Fpos = -511 in text mode, 
                            // _Fpos = 0 in binary mode
}

text.txt の内容:

0 1 2

tellgファイルがテキストモードで開かれている場合、最後のものは間違った結果を返します。この位置にしようとするseekgと、ファイル ストリームが台無しになります。私は何か間違ったことをしていますか、それともある種のバグですか?

私はVS2010、Win 7 64ビットを使用しています。

ありがとうございました。

4

0 に答える 0