2012-02-22 12 views
3

をwchar_t型:ブースト::フォーマットと私はブーストを使用して文字列をフォーマットしようとしています

wchar_t *msg; 
// fill msg 
boost::format("Error: %s") % msg).str() 

は、私が代わりにMSGの内容の何を得る、六角でMSGのアドレスです。

これらのようなものではありません成功:

boost::format("Error: %s") % new std::wstring(msg) 
boost::format("Error: %1%") % msg 

注:私はそれは無関係だと思うが、私はMSGを埋める方法があるにもかかわらず:

FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER | 40, NULL, GetLastError(), MAKELANGID(0, SUBLANG_ENGLISH_US), (LPTSTR) &msg, 512, NULL); 

とVisual Studioウォッチコンテンツを表示のmsgの正しく。

+0

なぜメッセージを参照しないのですか? – Ylisar

+2

'"%ls "'を試しましたか?ワイド文字列に使用されます。 –

+0

@ * msgを使って逆参照すると、最初の文字のASCIIコードが出力されます –

答えて

8

を使用してwchar_t文字列を操作してみてください。

0

boost::wformatは、wilxの推奨どおり使用できます。または、"%ls"lの文字がのell、小さいLの場合)を使用するように書式文字列を変更することができます。これにより、"%s"にワイド文字列が追加されるように変更されます。

+0

私は恐れています:%ls(小さいL)はアドレスを表示します。 boost :: wformat(L "Error:%1%")%msg).str()はコンテンツを出力します –

関連する問題