0

私はこれを試しました:

#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

4

1 に答える 1

0

ドー。

私は'w'sを逃しました:

std::wostream& operator<<(std::wostream& os, const ATL::CAtlStringW& string)
{
    return os << string.GetString();
}
于 2012-04-17T10:41:01.653 に答える