前提環境 日本語版WindowsかつVisual C++の環境の話です*1。Windows以外のOSや非日本語のWindows、Visual C++以外のコンパイラは当てはまりません。 用語 ここでは char const* の文字列や char の文字 std::string で表現されるマルチバイト文字(列)をまとめて string と表現します。また、 wchar_t const* の文字列 wchar_t の文字、 std::wstring で表現されるワイド文字(列)をまとめて wstring と表現します。 文字列と文字を区別すると文章が長くなるため一律文字と表現します。 内部表現 前述の環境において、stringの内部表現にはShift_JISが使われています。また C++11で入ったUTF-8リテラルの型にもstringが使われています。つまりstringにはShift_J