私はこれを試しました:
#include <iostream>
#include <boost\format.hpp>
#include <atlstr.h>
std::ostream& operator<<(std::ostream& os, const ATL::CAtlStringW& string)
{
return os << string.GetString();
}
int _tmain(int argc, _TCHAR* argv[])
{
CAtlStringW world = L"world";
boost::wformat formatter(L"hello %s");
formatter % world;
std::wstring formatted = formatter.str();
return 0;
}
フォーマットすると「hello 004B54D8」になってしまいましたが、「hello world」にしたいです。名前空間内で operator<< を定義するなど、いくつかのバリエーションを試しました。私は何が欠けていますか?operator<< は呼び出されないようです。
ありがとう。
ブースト形式のドキュメントには、カスタム型をフォーマットするための次の例が記載されています: http://www.boost.org/doc/libs/1_49_0/libs/format/example/sample_userType.cpp