ブーストを使用して文字列をフォーマットしようとしています:
wchar_t *msg;
// fill msg
boost::format("Error: %s") % msg).str()
msg のコンテンツの代わりに得られるのは、16 進数の 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 Watch は msg の内容を正しく表示します。