C関数(fopen
)でファイルを開き、そのハンドルをC++ファイルストリーム(fstream
...)に割り当てることはできますか?CファイルハンドルをC++ファイルストリームに割り当てる
質問:Windows上でUTF8を処理したいが、fstream
クラスにはconst char*
ctor/openメソッドしかありません。だから私はC APIを使用してそれを開き、ストリームオブジェクトを使用してそれを使用する必要があります。
ブーストストリームライブラリでは、独自のシンク/ソースを指定することは可能ですが、どこから開始するのかはわかりません。
説明:UTF8文字列として指定されたパスを含むファイルを開きたいとします。したがって、ファイルオープンメソッドは、fstream
でないUTF8パスをサポートする必要があります。 const wchar_t*
を受け入れるMSVC拡張機能は役に立ちますが、MinGWはこれらのオーバーロードを提供しません。だから私はwfopen
を代わりにウィンドウで使用する必要があります。
私は何かが不足しているかもしれませんが、 'UTF-8'は通常の' char * 'バッファを必要とします。また、fstream openメソッドはファイル名のみを扱うので、ファイルのエンコーディングには何の違いもありません。 fstreamを使ってファイルを開くのがなぜ機能しないのか、もっと詳しく説明できますか? – Galik
'fstream'からの文字列の読み込みは、どのロケールが割り当てられているかによって異なります。 –
ファイル名はUTF8です。追加しました。 – Flamefire