
Now that we have locales and facets in C++, we can encapsulate the locale-dependent parsing and formatting of telephone numbers into a new facet class. Let's focus on formatting in this example. We will call the new facet class phone_put, analogous to time_put, money_put, etc.
The phone_put facet class serves solely as a base class for facet classes that actually implement the locale-dependent formatting. The relationship of class phone_put to the other facet classes is illustrated in Figure 13:

Here is a first tentative declaration of the new facet class phone_put:
class phone_put: public locale::facet //1
{
public:
static locale::id id; //2
phone_put(size_t refs = 0) : locale::facet(refs) { } //3
string_t put(const string_t& ext
,const string_t& area
,const string_t& cnt) const; //4
};
| //1 | Derive from the base class locale::facet, so that a locale object will be able to maintain instances of our new phone facet class. |
| //2 | New base facet classes need to define a static data member id of type locale::id. |
| //3 | Define a constructor that takes the reference count that will be handed over to the base class. |
| //4 | Define a function put() that does the actual formatting. |
©Copyright 1998, Rogue Wave Software, Inc.
Send mail to report errors or comment on the documentation.