LCMapStringA 関数 (winnls.h)

identifier で指定されたロケールの場合は、指定した変換を使用して 1 つの入力文字列を別の入力文字列にマップするか、入力文字列の並べ替えキーを生成します。

メモ 相互運用性の理由から、Microsoft は新しいロケールのロケール識別子ではなくロケール名の使用に移行しているため、アプリケーションでは LCMapStringEx 関数を LCMapString よりも優先する必要があります。 この推奨事項は、Microsoft によって作成されたものを含むカスタム ロケールに特に適用されます。 Windows Vista 以降でのみ実行されるアプリケーションでは、 LCMapStringEx を使用する必要があります。

 

構文

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

文字列マッピング中に使用する変換の種類または生成する並べ替えキーの種類を指定するフラグ。 詳細な定義については、LCMapStringExdwMapFlags パラメーターを参照してください。

[in] lpSrcStr

関数によってマップされるソース文字列か、関数によって並べ替えキーの生成に使用されるソース文字列へのポインター。 この文字列のサイズを 0 にすることはできません。

[in] cchSrc

lpSrcStr で示されるソース文字列のサイズ (文字数)。 ソース文字列のサイズには終端の null 文字を含めることができますが、必要はありません。 終端の null 文字が含まれている場合、終了する null 文字は並べ替え不可能と見なされ、常にそれ自体にマップされるため、関数のマッピング動作は大きな影響を受けません。

アプリケーションでは、 パラメーターを負の値に設定して、ソース文字列が null で終了することを指定できます。 この場合、 LCMapString が文字列マッピング モードで使用されている場合、関数は文字列の長さ自体を計算し、 lpDestStr で示されるマップされた文字列を null で終了します。

アプリケーションでは、このパラメーターを 0 に設定できません。

[out, optional] lpDestStr

この関数がマップされた文字列または並べ替えキーを取得するバッファーへのポインター。

アプリケーションが 関数を使用して並べ替えキーを生成している場合 (LCMAP_SORTKEY):

  • 並べ替えキーはバッファーに格納され、不透明なバイト配列として扱われます。 格納された値には、任意の位置に埋め込まれた 0 バイトを含めることができます。
  • 宛先文字列には奇数バイトを含めることができます。 LCMAP_BYTEREV フラグは、偶数バイトのみを反転します。 並べ替えキーの最後のバイト (奇数位置) は反転されません。

呼び出し元が文字列のサブセットを明示的に要求した場合、呼び出し元が cchDest で指定しない限り、宛先文字列に終端の null 文字は含まれません。

この関数が失敗した場合、宛先バッファーに部分的な結果が含まれているか、まったく結果が含まれない可能性があります。 この場合、すべての結果は無効と見なす必要があります。

Note

LCMAP_UPPERCASEまたはLCMAP_LOWERCASEを設定する場合、変換先の文字列はソース文字列と同じバッファーを使用できます。 ただし、一部の条件により、返される大文字と小文字が区別された文字列の長さが異なる場合があるため、これは強くお勧めしません。

[in] cchDest

lpDestStr で示される宛先文字列のサイズ (文字数)。 アプリケーションが文字列マッピングに 関数を使用している場合は、このパラメーターの文字数を指定します。 終端の null 文字のスペースが cchSrc に含まれている場合、 cchDest には終端の null 文字のスペースも含める必要があります。

アプリケーションが関数を使用して並べ替えキーを生成している場合は、サイズのバイト数を指定します。 このバイト数には、並べ替えキー 0x00ターミネータのスペースを含める必要があります。

アプリケーションで cchDest を 0 に設定できます。 この場合、関数は lpDestStr パラメーターを使用せず、マップされた文字列または並べ替えキーに必要なバッファー サイズを返します。

戻り値

関数が文字列マッピングに使用されたときに成功した場合、変換された文字列の文字数が返されます (詳細については、 cchSrccchDest を参照してください)。

関数が文字列マッピングに使用されたときに成功した場合、並べ替えキーのバイト数が返されます。

成功しなかった場合、この関数は 0 を返します。 拡張エラー情報を取得するために、アプリケーションは GetLastError を呼び出すことができます。このエラー コードは、次のいずれかのエラー コードを返すことができます。

  • ERROR_INSUFFICIENT_BUFFER。 指定されたバッファー サイズが十分な大きさではなかったか、 正しく NULL に設定されていません。
  • ERROR_INVALID_FLAGS。 フラグに指定された値が無効です。
  • ERROR_INVALID_PARAMETER。 パラメーター値のいずれかが無効です。
成功しなかった場合、この関数は 0 を返します。 拡張エラー情報を取得するために、アプリケーションは GetLastError を呼び出すことができます。このエラー コードは、次のいずれかのエラー コードを返すことができます。
  • ERROR_INSUFFICIENT_BUFFER。 指定されたバッファー サイズが十分な大きさではなかったか、 正しく NULL に設定されていません。
  • ERROR_INVALID_FLAGS。 フラグに指定された値が無効です。
  • ERROR_INVALID_PARAMETER。 パラメーター値のいずれかが無効です。

解説

「LCMapStringEx の解説」を参照してください。

ANSI バージョンの LCMapString は、指定されたロケールに関連付けられている既定の Windows (ANSI) コード ページに基づいて、Unicode との間で文字列をマップします。 この関数の ANSI バージョンが Unicode のみのロケールで使用されている場合、オペレーティング システムはシステムの既定の Windows ANSI コード ページを表すCP_ACP値を使用するため、関数は成功する可能性があります。 ただし、システム コード ページで未定義の文字は、文字列に疑問符 (?) として表示されます。

Note

winnls.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして LCMapString を定義します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー winnls.h (Windows.h を含む)
Library Kernel32.lib
[DLL] Kernel32.dll

関連項目

[CompareString]

FindNLSString

GetNLSVersion

アプリケーションでの並べ替えの処理

LCMapStringEx

各国語サポート

各国語サポート関数