1

答え

すべてが Windows でコンパイルおよび実行されたにもかかわらず、フォーマットtellgされていない入力関数として動作することを完全に忘れており、テキスト モードでは確実に使用できないため、矛盾が見られます。詳細については、 std::basic_istream::tellgを参照してください。

オリジナル

次の非常に単純なプログラムでは、gcc 4.7.1 (mingw) と MSVC2012 で異なる結果が得られます。

#include <iostream>
#include <fstream>
int main()
{
    std::ifstream in("test.txt");
    int i;
    in >> i;
    std::cout << in.tellg() << std::endl;
}  

は次のtest.txtとおりです (重要な注意:の後に改行があります1)

1

MSVC 出力:

1

gcc 4.7.1 (mingw) 出力:

2

質問

改行を抽出する必要があるため、gccは正しいと思いoperator>>ますが、確かではありません。どのコンパイラが正しいですか?

:両方のプログラムはコンパイルされ、Windowsで実行されました)。

テキストファイルのHEX

31 OD OA

Linux のような行末ファイル、つまり31 0AMSVC 出力0と gcc 出力を作成するとします1

4

1 に答える 1

2

私のコメントに続いて、ifstream を使用したファイルの読み取りについて、この優れた投稿を参照してください。

于 2013-03-30T22:02:38.710 に答える