title: What is the difference in using CStringW/CStringA and CT2W/CT2A to convert strings?
body: <p>In the past, I used <code>CT2W</code> and <code>CT2A</code> to convert string between Unicode &amp; Ansi. Now It seems that <code>CStringW</code> and <code>CStringA</code> can also do the same task.</p>
  
  <p>I write the following code snippet:</p>
  
  <pre><code>CString str = _T("Abc");
  CStringW str1;
  CStringA str2;
  CT2W str3(str);
  CT2A str4(str);
  
  str1 = str;
  str2 = str;
  </code></pre>
  
  <p>It seems <code>CStringW</code> and <code>CStringA</code> also perform conversions by using <code>WideCharToMultibyte</code> when I assign <code>str</code> to them.</p>
  
  <p>So, what is the advantages of using <code>CT2W</code>/<code>CT2A</code> instead of <code>CStringW</code>/<code>CStringA</code>, since I have never heard of the latter pair. Neither MS recommend the latter pair to do the conversion.</p>