1

重複の可能性:
非 MSVC コンパイラを使用して、Windows で Unicode ファイル名のファイルで fstream を開く

WindowsでGCCを使用して、ファイル名に非ASCII文字を含むファイルを開く簡単な方法を見つけようとしています。Microsoft の STL はクラスwstringのオーバーロードを提供しますfstreamが、`wchar_t' が明確に定義されていないため、標準 C++ は提供しません。

標準 C++ および Win32 API で、ファイル名にfstreama が指定されたときに aを開く方法を探しています。std::wstring

を取り、を模倣する独自の streambuf サブクラスを作成したくありません。関数 (またはそれが宣言されているもの)を模倣する必要があるため、奇妙な名前のファイルを問題なく開くことができます。std::wstringfstreamfstream::open(const std::wstring &)

私はすでに短い DOS 8.3 ファイル名を使用することを考えていましたが、GetShortPathName は、STL コンストラクター/open 関数では使用できないワイド文字列を取り、出力します。fstreamさまざまなコードページに変換するためのメソッドが用意されているため、おそらくワイド文字列をローカル コードページに変換すると、 ?を開くことができる正しい 8 ビット文字列が得られます。

4

0 に答える 0