VS2008 を使用するstd::locale("Russian")
と、ファイルは「キリル文字 (Windows)」としてエンコードされます (一部の Unicode 形式ではありません)。たとえば、Internet Explorer で開いてエンコーディングをキリル文字 (Windows) に変更すると、文字が表示されます。
ファイルを何らかの Unicode 形式で保存する方が一般的です。
私が使用する場合:
const std::locale AvailLocale
= std::locale(std::locale("Russian"), new std::codecvt_utf8<wchar_t>());
UTF-8として保存し、たとえばメモ帳でファイルをUTF-8ファイルとして開きます。見る доброе утро
同様に、codecvt_utf16 またはその他のコーディング スキームを使用して、Unicode 文字をエンコードできます。
codecvt_utf8 は C++11 に固有です。
別の方法として、 boostを使用することもできます
: http://www.boost.org/doc/libs/1_46_0/libs/serialization/doc/codecvt.html doc/libs/1_40_0/boost/detail/utf8_codecvt_facet.hpp それほど複雑ではないようです)。
またはこのライブラリ: http://utfcpp.sourceforge.net/