2008年02月27日

Unicodeアプリケーションでファイルオープン

開発環境Visual C++ 2008

Visual Studio 2008を買ってからほぼ毎日ちょっとずつ触っていますが、GUIが今まで使っていたVisual Studio.NET 2003とあんまり変わらないので慣れるのは早そうです。
まだboostが公式に2008に対応していないあたりがちょっと辛いですが。

Unicodeアプリケーションでファイルオープン

C++では、昔は半角文字は1バイト、全角文字は2バイトと可変長になっており、文字列処理が大変面倒でした。 JavaやC#では、半角文字も全角文字も1文字2バイト固定になっていて、大変羨ましく感じたものでした。
そこで、C++でも文字を扱うときはwchar_tを使い、1文字を固定長にしようとしてみたことがあります。 文字列はstd::wstringを使えば問題なかったのですが、標準ライブラリを使ったファイルI/Oに問題がありました。 Visual Studio.NET 2003のstd::fstreamopenメンバは、
open(const char *_Filename, (略)
しかありませんでした。wchar_tベースのファイル名をstd::fstreamに渡すことができなかったのです。
そこで仕方がなく、WideCharToMultiByteを使ってcharベースの文字列に変換したり、別のライブラリを使ったりしていますた。

これが、Visual Studio 2008では解決されています(Visual Studio 2005の時点で既に解決されていたみたいです)。
std::fstream
open(const wchar_t *_Filename, (略)
というメンバが追加されました。これでファイル名をwchar_tベースで管理できます。ありがたいことです。 ようやくUnicodeアプリケーションのファイルI/Oに標準ライブラリを使えるようになりました。

投稿者 MASATO : 2008年02月27日 00:15 | トラックバック
コメント
コメントする









名前、アドレスを登録しますか?