LCMapStringA 関数 (winnls.h)
識別子で指定されたロケールの場合は、指定した変換を使用して 1 つの入力文字列を別の入力文字列にマップするか、入力文字列の並べ替えキーを生成します。
構文
int LCMapStringA(
[in] LCID Locale,
[in] DWORD dwMapFlags,
[in] LPCSTR lpSrcStr,
[in] int cchSrc,
[out, optional] LPSTR lpDestStr,
[in] int cchDest
);
パラメーター
[in] Locale
ロケールを指定するロケール識別子。 MAKELCID マクロを使用してロケール識別子を作成するか、次のいずれかの定義済み値を使用できます。
次のカスタム ロケール識別子もサポートされています。[in] dwMapFlags
文字列マッピング中に使用する変換の種類または生成する並べ替えキーの型を指定するフラグ。 詳細な定義については、lcMapStringExの dwMapFlags パラメーター
[in] lpSrcStr
関数が並べ替えキーの生成にマップまたは使用するソース文字列へのポインター。 この文字列のサイズを 0 にすることはできません。
[in] cchSrc
lpSrcStrで示されるソース文字列のサイズ (文字単位)。 ソース文字列のサイズには終端の null 文字を含めることができますが、必要はありません。 終端の null 文字が含まれている場合、終了する null 文字は並べ替え不可と見なされ、常にそれ自体にマップされるため、関数のマッピング動作は大きな影響を受けません。
アプリケーションでは、パラメーターを任意の負の値に設定して、ソース文字列が null で終了することを指定できます。 この場合、LCMapString
アプリケーションでは、このパラメーターを 0 に設定できません。
[out, optional] lpDestStr
この関数がマップされた文字列または並べ替えキーを取得するバッファーへのポインター。
アプリケーションが関数を使用して並べ替えキー (LCMAP_SORTKEY) を生成している場合:
- 並べ替えキーはバッファーに格納され、不透明なバイト配列として扱われます。 格納された値には、任意の位置に埋め込まれた 0 バイトを含めることができます。
- 宛先文字列には奇数バイトを含めることができます。 LCMAP_BYTEREV フラグは、偶数バイトのみを反転します。 並べ替えキーの最後のバイト (奇数位置) は反転されません。
呼び出し元が文字列のサブセットを明示的に要求した場合、呼び出し元が cchDestで指定しない限り、宛先文字列に終端の null 文字
この関数が失敗した場合、宛先バッファーに部分的な結果が含まれているか、まったく結果が含まない可能性があります。 この場合、すべての結果が無効と見なされます。
手記
LCMAP_UPPERCASEまたはLCMAP_LOWERCASEを設定する場合、コピー先の文字列はソース文字列と同じバッファーを使用できます。 ただし、一部の条件により、返される大文字と小文字が区別される文字列の長さが異なる場合があるため、これは強くお勧めしません。
[in] cchDest
lpDestStrで示される宛先文字列のサイズ (文字単位)。 アプリケーションが文字列マッピングに関数を使用している場合は、このパラメーターの文字数を指定します。 cchSrcに終端の null 文字の領域
アプリケーションで並べ替えキーを生成するために関数を使用している場合は、サイズのバイト数が提供されます。 このバイト数には、並べ替えキー 0x00ターミネータの領域を含める必要があります。
アプリケーション cchDest を 0 に設定できます。 この場合、この関数は lpDestStr パラメーターを使用せず、マップされた文字列または並べ替えキーに必要なバッファー サイズを返します。
戻り値
関数が文字列マッピングに使用されたときに成功した場合、変換された文字列の文字数が返されます (詳細については、cchSrc と cchDest
関数が文字列マッピングに使用されたときに成功すると、並べ替えキーのバイト数が返されます。
成功しなかった場合、この関数は 0 を返します。 拡張エラー情報を取得するために、アプリケーションは GetLastError
- ERROR_INSUFFICIENT_BUFFER。 指定されたバッファー サイズが十分な大きさではなかったか、NULL
正しく設定されていません。 - ERROR_INVALID_FLAGS。 フラグに指定された値が無効でした。
- ERROR_INVALID_PARAMETER。 パラメーター値のいずれかが無効でした。
- ERROR_INSUFFICIENT_BUFFER。 指定されたバッファー サイズが十分な大きさではなかったか、NULL
正しく設定されていません。 - ERROR_INVALID_FLAGS。 フラグに指定された値が無効でした。
- ERROR_INVALID_PARAMETER。 パラメーター値のいずれかが無効でした。
備考
LCMapStringExの
LCMapString の ANSI バージョンは、指定されたロケールに関連付けられている既定の Windows (ANSI) コード ページに基づいて、Unicode との間で文字列をマップします。 この関数の ANSI バージョンが Unicode のみのロケールで使用されている場合、オペレーティング システムはシステムの既定の Windows ANSI コード ページを表すCP_ACP値を使用するため、関数は成功する可能性があります。 ただし、システム コード ページで未定義の文字は、文字列に疑問符 (?) として表示されます。
手記
winnls.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして LCMapString を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされる最小サーバー | Windows 2000 Server [デスクトップ アプリのみ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | winnls.h (Windows.h を含む) |
ライブラリ | Kernel32.lib |
DLL | Kernel32.dll |
関連項目
CompareString の
GetNLSVersion の
アプリケーション での並べ替え処理の
LCMapStringEx の