Windowsコアプログラミング学習日記 - 文字と文字列の処理 その1

Unicode 文字:

通常の状況では、各 Unicode 文字は UTF-16 でエンコードされ、UTF の正式名称は Unicode Transformation Format (Unicode 変換形式)、UTF です。

各文字を 2 バイト (または 16 ビット、1 バイトあたり 8 ビット) としてエンコードします。


現在、Windows オペレーティング システムのプログラミングでは主に Unicode 文字が使用されていますが、なぜ Unicode 文字を使用するのでしょうか? 私の考えでは、最も重要な点は次のとおりです。

1. Windows 内のすべての作業は Unicode 文字と Unicode 文字列を使用して行われるため、ANSI 文字または ANSI 文字列を渡すことを主張します。

   Windows はメモリを割り当て、ANSI 文字または文字列を同等の Unicode 形式に変換する必要があるため、Unicode はアプリケーションの効率を向上させます。より多くのメモリを消費します。

   少し。

2. Unicode を使用すると、アプリケーションのコードは COM と簡単に統合されます (COM では、Unicode 文字と Unicode 文字列を使用する必要があります)。


ANSI 文字と Unicode 文字の違いを宣言します。

1.ANSI:

   //8文字

   char c = 'A';

   //弦

   char szBuffer[100] = "文字列";

2.ユニコード:

    //16文字

   wchar_t c =L 'A';

    //弦

    wchar_t szBuffer[100] = L "文字列";

    文字列の前に大文字の「L」を付けると、文字列を Unicode 文字列としてコンパイルする必要があることがコンパイラに通知されます。


以下は、Windows 開発チーム自身が WinNT.h ヘッダー ファイルで定義したデータ型です。

    //8ビット

    typedef 文字 CHAR;

    typedef CHAR *PCHAR;

    typedef CHAR *PSTR;

    typedef CONST CHAR *PCSTR

    //16ビット

    typedef wchar_t WCHAR;

    typedef WCHAR *PWCHAR;

    typedef WCHAR *PWSTR;

    typedef CONST WCHAR *PCWSTR;

    としても

    typedef _nullterminated WCHAR *NWPSTR、*LPWSTR、*PWSTR;

    接頭辞 _nullterminated は、型が関数パラメーターおよび戻り値としてどのように使用されるかを説明するヘッダー注釈です。


コードを記述するときは、ANSI および Unicode の文字/文字列を使用してコンパイルできます。

    #ifdef ユニコード

    typedef WCHAR TCHAR、*PTCHAR、PTSTR;

    typedef CONST WCHAR *PCTSTR;

    #define __TEXT(quote) 引用符


    #define __TEXT(引用) ##引用

  

    #それ以外

    typedef CHAR TCHAR、*PTCHAR、PTSTR;

    typedef CONST CHAR *PCTSTR;

    #define __TEXT(quote) 引用符

  

    #endif

    #define TEXT(引用) __TEXT(引用)

    これらの型とマクロを使用すると、ANSI 文字と Unicode 文字の両方がコンパイルされます。

Guess you like

Origin blog.csdn.net/bluealand/article/details/42045045