皆さん解決にご協力頂きありがとうございます。

>>603
>>605
ご指摘通りに指定したら解決しました。
ということは、ios::binaryを指定しないと\r\nが\nに短縮されてファイルサイズが縮むんですね。
今までgetメソッドがその処理を受け持つものだと思っていました。
でもios::endがその差を吸収してくれないならテキストモードで全内容を読みたいとき
readメソッドは使えずgetメソッドで一行ずつ読み込むしかないんですね。
ファイルマッピングは使ったことがありますが今回はクロスプラットフォームを実現したくて見送りました。
まあプリプロセッサで振り分ければいいので単なる無精ですが。