title: Strings and character encoding in C++
body: <p>I read a few posts about best practices for strings and character encoding in C++, but I am struggling a bit with finding a general purpose approach that seems to me reasonably simple and correct.  Could I ask for comments on the following?  I'm inclined to use UTF-8 and UTF-32, and to define something like:</p>
  
  <pre><code>typedef std::string string8;
  typedef std::basic_string&lt;uint32_t&gt; string32;
  </code></pre>
  
  <p>The string8 class would be used for UTF-8, and having a separate type is just a reminder of the encoding.  An alternative would be for string8 to be a subclass of std::string and to remove the methods that aren't quite right for UTF-8.</p>
  
  <p>The string32 class would be used for UTF-32 when a fixed character size is desired.</p>
  
  <p>The UTF-8 CPP functions, utf8::utf8to32() and utf8::utf32to8(), or even simpler wrapper functions, would be used to convert between the two.</p>