file_source, sinkとfile_descriptor_source, sink

使用する上で目立った違いは、改行コードの扱いでした。

file_source, sinkは、ファイル読み込みの際、改行コード"\r\n"を"\n"に変換します。
そして書き込む際、"\n"を"\r\n"に変換して出力します。
これはstd::ifstream, ofstreamと同じ動作です。

file_descriptor_source, sinkは、ファイル読み込み、そして書き込みの際、改行コードを変換することはありません。
"\n"は"\n"、"\r\n"は"\r\n"として入出力します。


"\r\n"も"\n"も"\n"として扱えるので、file_source, sinkのほうが使いやすそうですね。

ただ、ドキュメントには、file_descriptor_source, sinkはナロー文字とワイド文字間の変換を行わないので、file_source, sinkよりもこちらを使ったほうがよい、というようなことが書かれています。