Linux Install

Android

Linux Tools

Linux AV

Linux Memo

WINDOWS

PROGRAM

動画 Memo

音楽 Memo

モバイルアプリ Memo

FILE FORMAT

PROTOCOL

DEVICE

BookMark

その他


VisualC   

Visual C のメモ

primitive 型

char-128 〜 1271byte(java は 2)
unsigned char0 〜 2551byte
short-32768 - 327672byte
unsigned short0 〜 655352byte
wchar_t2byte
int-2147483648-21474836474byte
long4byte
long long8byte
__int648byte
double8byte

ラッパ

DWORDunsigned long8byte
LONGLONG__int648byte

文字列

W系 (ワイド文字) = UNICODE

  • 主に新しい処理系ではこちらが使われる
  • 1文字に必ず2バイト使う( 半角の 'A' でも 2byte )
  • 2byte なので基本型はshort
    実体構文書き換え
    wchar_t*unsigned short*wchar_t* str = L"A漢字";
    WCHAR*unsigned short*WCHAR* = L"A漢字";
    LPWSTRunsigned short*LPWSTR = L"A漢字";
    LPCWSTRconst unsigned short*LPCWSTR = L"A漢字";不可
    ※ Lマクロは明示的に Unicode にしてしまうが、後述の T マクロでも適切に代入はされる

A系 (マルチバイト文字) SJIS等

  • 主に古い処理系ではこちらが使われる
  • 半角は 1バイト 全角は 2バイトを使って表す
  • 1byte なので 基本型は char
    実体構文書き換え
    char*char*char* str = "A漢字";
    const char*const char*const char * str = "A漢字";不可
    LPSTRchar*LPSTR str = "A漢字";
    LPCSTRconst char*LPCSTR str = "A漢字";不可

汎用型 TCHAR

  • W系とA系でプログラムが異なると汎用性がないため、defineで両方使えるようにする仕組み
  • UNICODE が宣言されていたら wchar_t(2byte)に、それ以外ならchar(1byte)になる
    TCHARchar / wchar_t
    CStringTCHAR*const char からも作れる
    LPTSTRTCHAR*
    LPCTSTRconst TCHAR*

マクロ

  • W系とA系のコードの互換のためにさまざまな変換関数やマクロがある
L"ほげABCほげ"wchar_t*半角 A 等も2バイトを使う文字になる
TEXT(), _TTCHAR*TCHAR型に変換 (処理系によってchar/wchar_t が変わる)

変換

Unicode -> MBCS(MultiByte)

  • WideCharToMultiByte
  • CAtlString

MBCS(MultiByte) -> Unicode