次の方法で共有


LCMapStringA 関数 (winnls.h)

識別子で指定されたロケールの場合は、指定した変換を使用して 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

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

[in] lpSrcStr

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

[in] cchSrc

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

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

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

[out, optional] lpDestStr

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

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

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

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

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

手記

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

[in] cchDest

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

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

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

戻り値

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

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

成功しなかった場合、この関数は 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の に関する解説を参照してください。

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 の

FindNLSString

GetNLSVersion の

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

LCMapStringEx の

各国語サポート

各国語サポート関数