VC++8.0(2005) 以降の fopen では ccs でエンコーディングを指定することができる
CStdioFile は FILE* を受け取ることができるので以下のようにできる
まずは読み込み
CString line; CStdioFile file(_tfopen(_T("C:\\utf8.txt"), _T("r, ccs=UTF-8"))); while (file.ReadString(line)) { AfxMessageBox(line); } file.Close();
CString line; CStdioFile file(_tfopen(_T("C:\\utf16.txt"), _T("r, ccs=UTF-16LE"))); while (file.ReadString(line)) { AfxMessageBox(line); } file.Close();
次に保存
CStdioFile file(_tfopen(_T("C:\\a.txt"), _T("w, ccs=UTF-8"))); file.WriteString(_T("abcあいうえお")); file.Close();
CStdioFile file(_tfopen(_T("C:\\a.txt"), _T("w, ccs=UTF-16LE"))); file.WriteString(_T("abcあいうえお")); file.Close();
fstream でもどうにかならないものか・・・