C++ Convert any character sequence to any standard string

Four standard char types can be transformed to each other
Four standard char types can be transformed to each other

(Note: this is the second part of C++ : codecvt deprecated. Panic? )


Due to popular acclaim I have made and published a stand alone and fully functional code described in this post. It is in the form of Github Gist here.

It is also updated and optimized. Enjoy …


This is not a foreign language translator or some such code.  This is a standard  C++ 17 utility to transform  the core character sets between each other.  The first 127 characters, that is. As a such it is remarkably useful and simple. For full blown, locale aware solutions please look elsewhere, starting from here.  End of update.

Standard C++ std lib, is one very complete and useful library. But there are times when you do realize you can build one or two of very simple utilities on top of it.

Simple but sometimes surprisingly powefull. Like perhaps this one is.

An mechanism for transforming any standard sequence  of chars (i.e. holding standard char types),  into any of the four standard string types.  Which are:

Type Definition
std::string std::basic_string<char>
std::wstring std::basic_string<wchar_t>
std::u16string (C++11) std::basic_string<char16_t>
std::u32string (C++11) std::basic_string<char32_t>

First the reason you are here, The core of the code:

One struct with one function call operator, does it all.  Usage:

And so on. Any standard sequence made up of standard chars will do as a an legal input.  As long as it has begin() and end() methods, and the value_type typedef. Including native string literals too, as an legal input.

We could also serve stunt programmers to a certain extent, too:

Perhaps (one might remark) we could code this in a more “resilient” way. But why should we? Using (for example) non standard strings as return type simply will not compile.

And after all it is certainly wise to wait for C++20 constraints and concept’s to appear soon in a compiler near you. Applying that standard feature, will certainly make for one resilient and more user friendly version.

In case you would like to try this yourself do mail us, please.


Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.