std::wstringをstd::wistreamへの変換は直接はできません。一度std::wstringbufに変換してからstd::wistremに変換します。
#include <stdio.h> #include <tchar.h> #include <iostream> #include <string> #include <sstream> /* wstringをwistreamに変換する */ int _tmain ( int argc , _TCHAR* argv[] ) { /* std::wcoutのロケールを設定 これを設定するだけで、std::wcoutで日本語が表示される ようになります。 */ std::wcout.imbue( std::locale( "", std::locale::ctype ) ); // 変換対象のテキスト std::wstring strText = L"wstringをwistremに変換しました。"; // 一旦std::wstringbufへ変換する(直接は変換できない為) std::wstringbuf strBuf( strText.c_str() ); // wistreamへ変換 std::wistream wistream( &strBuf ); /* wistreamの内容を出力 */ while( !wistream.eof() ) { std::wcout << (wchar_t)wistream.get(); } std::wcout << std::endl; // 正常終了 return( 0 ); }
wstringをwistremに変換しました。