ATL と MFC の文字列変換マクロを使うもので、CW2A()はUncideからANSIに変換します。この際、第2引数にコードページが指定可能で、これを利用することでANSIではなくUTF-8を得ることができます。 # CW2A(CT2W(str), CP_UTF8)をCT2A(str, CP_UTF8)に省略してしまうとstrがANSIだった...
ANSI コード ページが UTF-8 に対して構成されている場合、-A API は UTF-8 で動作します。 このモデルには、コードの変更を必要とせずに -A API を使用して作成された既存のコードをサポートするという利点があります。Microsoft Game Development Kit (GDK) では、UTF-8 が既定であり...
UTF-8からの書き換えが許されるのであれば、メモ帳で「名前を付けて保存」で文字コードを「UTF-8」から「ANSI」に変更して保存しなおすことが一番簡単な対応策になります。(ただし、その際に、次のメッセージがでる場合は、UTF-8では保存できても ANSIでは保存できない文字を含んでいるので...
#include "strconv2.h" #include <iostream> #include <string> int main(void) { std::string nameUtf8 = u8"太郎"; int age = 15; // 以下の3行は同じ意味です。 std::cout << utf8_to_ansi(format(u8"ハロー、私の名前は %s。 年は %d だ!", nameUtf8.c_str(), age)) << std::...
また、UNICODE版も、ANSI文字は直接的には扱ってはおらず、読み込み時にUNICODE文字に自動変換されています。 MBCS版のMFCのファイル読み取り処理に、UNICODEテキスト扱う機能は「ありません」。 ですので、MBCS版でUNICODEテキストを扱う必要がある場合は、MFCではなく、CRTを直接利用するなど、より...