標準 C 関数

標準 C ランタイム ライブラリには、Unicode で使用できる文字列関数の Unicode UTF-16 (ワイド文字) バージョンと、 1 バイト文字セット (SBCSs) の文字で使用できるバイト指向バージョンの文字列関数の両方が含まれています。 Unicode データ型 WCHAR は ANSI C のデータ型wchar_tと互換性があり、Unicode 文字列関数にアクセスできます。 Unicode バージョンの関数は、"wcs" (または "_wcs" という文字で始まります。 コード ページに使用されるデータ型 CHAR は、ANSI C の文字データ型 char と互換性があり、文字列関数にアクセスできます。 関数の文字バージョンは、文字 "str" で始まります。 また、文字 "_mbs" で始まる 2 バイト文字セット (DBCS) 用の特殊バージョンもあります。

標準 C ランタイム ライブラリには、すべての標準 C 文字列関数のジェネリック関数が含まれています。 これらは "_tcs" で始まり、Tchar.h ヘッダー ファイルに一覧表示されます。 これらの関数では、ジェネリック TCHAR データ型が使用されます。

アプリケーションでは、ジェネリック関数を使用して Unicode 用にコンパイルするために、次の行を追加する必要があります。

#define _UNICODE

#include <tchar.h>
#include <wchar.h>

Tchar.h ファイルと Wchar.h ファイルの両方が必要であり、_UNICODE変数の先頭のアンダースコアも必要であることに注意してください。 この命名法は標準 C ライブラリに固有です。 アンダースコアなしでレンダリングされる "UNICODE" は、Microsoft Windows ランタイム用です。

wcstombs 関数と mbstowcs 関数は、標準 C ライブラリでサポートされている文字セットから Unicode および戻る文字セットに変換できますが、いくつかの制限があります。 Unicode との間で文字列を変換する方法の詳細については、「文字列 型間の変換」を参照してください。

Tchar.h で定義されている printf 関数は、Strsafe.h 印刷関数と同じ書式指定 ( StringCbPrintf など) をサポートしています。 同様に、Tchar.h は wprintf 関数を定義します。この関数では、書式指定文字列自体が Unicode 文字列です。

注意事項

バッファー処理の不十分さは、バッファー オーバーランを伴う多くのセキュリティの問題に関係しています。 「Strsafe.h リファレンス」を参照してください。 Strsafe.h で定義されている関数は、コード内で適切なバッファー処理を行うための追加処理を提供します。 これらは、組み込みの C/C++ に対応する、および特定の Microsoft Windows 実装を置き換えることを目的としています。 詳細については、「 セキュリティに関する考慮事項: 国際機能」を参照してください。

 

Windows API の Unicode