다음을 통해 공유


LCMapStringA 함수(winnls.h)

식별자로 지정된 로캘의 경우 지정된 변환을 사용하여 한 입력 문자 문자열을 다른 입력 문자열에 매핑하거나 입력 문자열에 대한 정렬 키를 생성합니다.

참고 상호 운용성을 위해 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 이 문자열 매핑 모드에서 사용되는 경우 함수는 문자열 길이 자체를 계산하고 null은 lpDestStr로 표시된 매핑된 문자열을 종료합니다.

애플리케이션에서 이 매개 변수를 0으로 설정할 수 없습니다.

[out, optional] lpDestStr

이 함수가 매핑된 문자열 또는 정렬 키를 검색하는 버퍼에 대한 포인터입니다.

애플리케이션이 함수를 사용하여 정렬 키(LCMAP_SORTKEY)를 생성하는 경우:

  • 정렬 키는 버퍼에 저장되고 불투명한 바이트 배열로 처리됩니다. 저장된 값에는 임의 위치에 포함된 0바이트가 포함될 수 있습니다.
  • 대상 문자열은 홀수 바이트를 포함할 수 있습니다. LCMAP_BYTEREV 플래그는 짝수 바이트만 역방향으로 설정합니다. 정렬 키의 마지막 바이트(홀수 위치)가 반전되지 않습니다.

호출자가 문자열의 하위 집합을 명시적으로 요청하는 경우 호출자가 cchDest로 지정하지 않는 한 대상 문자열에는 종료 null 문자가 포함되지 않습니다.

이 함수가 실패하면 대상 버퍼에 부분 결과 또는 결과가 전혀 포함되지 않을 수 있습니다. 이 경우 모든 결과가 잘못된 것으로 간주되어야 합니다.

참고

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) 코드 페이지를 기반으로 유니코드와 문자열을 매핑합니다. 이 함수의 ANSI 버전을 유니코드 전용 로캘과 함께 사용하면 운영 체제에서 시스템 기본 Windows ANSI 코드 페이지를 나타내는 CP_ACP 값을 사용하기 때문에 함수가 성공할 수 있습니다. 그러나 시스템 코드 페이지에서 정의되지 않은 문자는 문자열에 물음표(?)로 표시됩니다.

참고

winnls.h 헤더는 LCMapString을 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

   
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 winnls.h(Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

CompareString

FindNLSString

GetNLSVersion

애플리케이션에서 정렬 처리

LCMapStringEx

국가 언어 지원

국가 언어 지원 기능