title: C++ read and write UTF-32 files
body: <p>I want to write a language learning app for myself using Visual Studio 2017, C++ and the WindowsAPI (formerly known as Win32). The Operation System is the latest Windows 10 insider build and backwards-compatibility is a non-issue. Since I assume English to be the mother tounge of the user and the language I am currently interested in is another European language, ASCII might suffice. But I want to future-proof it (more excotic languages) and I also want to try my hands on UTF-32. I have previously used both UTF-8 and UTF-16, though I have more experience with the later.</p>
  
  <p>Thanks to <code>std::basic_string</code>, it was easy to figure out how to get an UTF-32 string:</p>
  
  <pre><code>typedef std::basic_string&lt;char32_t&gt; stringUTF32
  </code></pre>
  
  <p>Since I am using the WinAPI for all GUI staff, I need to do some conversion between UTF-32 and UTF-16.</p>
  
  <p>Now to my problem: Since UTF-32 is not widely used because of its inefficiencies, there is hardly any material about it on the web. To avoid unnecessary conversions, I want to save my vocabulary lists and other data as UTF-32 (for all UTF-8 advocates/evangelists, the alternative would be UTF-16). The problem is, I cannot find how to write and open files in UTF-32. </p>
  
  <p>So my question is: How to write/open files in UTF-32? I would prefer if no third-party libraries are needed unless they are a part of Windows or are usually shipped with that OS.</p>