문자열 정보
문자열 함수는 문자열에서 각 문자의 문자 형식을 결정하는 수단뿐만 아니라 문자 문자열을 복사, 비교, 정렬, 형식 및 변환하는 수단을 애플리케이션에 제공합니다. 애플리케이션이 실행되는 운영 체제에서 이러한 문자 집합을 지원하는 경우 모든 문자열 함수는 단일 바이트, 더블 바이트 및 유니코드 문자 집합을 지원합니다.
보안 경고: 문자열 함수를 잘못 사용하면 애플리케이션에 보안 문제가 발생할 수 있습니다. 일반적으로 여기에는 애플리케이션에 대한 서비스 거부 공격 또는 공격자의 실행 코드 삽입을 허용할 수 있는 버퍼 오버런이 포함됩니다. Strsafe 함수를 사용하면 문자열을 더 안전하게 처리할 수 있으며 애플리케이션의 보안을 강화하도록 권장됩니다. 이러한 함수에 대한 자세한 내용은 Strsafe.h 함수 사용을 참조하세요.
이 섹션에서는 다음 항목을 설명합니다.
C Run-Time 문자열 함수와 비교
많은 문자열 함수는 표준 CRT(C 런타임) 라이브러리에서 친숙한 문자열 함수를 복제하거나 향상시킵니다. 많은 향상된 기능을 통해 문자열 함수가 유니코드 또는 확장 문자 집합을 사용할 수 있습니다. 다음 표에서는 CRT 함수, Windows 함수(CRT 함수와 달리 유니코드를 지원하는 함수) 및 StrSafe 함수를 보여 줍니다.
CRT 문자열 함수 | Windows 문자열 함수 | StrSafe 함수 |
---|---|---|
strcat | lstrcat | |
Strcmp | lstrcmp | (동등한 함수 없음) |
strcpy | lstrcpy | |
strlen | lstrlen |
예를 들어 strlen 함수는 항상 문자열의 바이트 수를 반환하지만 lstrlen 함수는 ANSI 버전의 함수에 대한 바이트 또는 유니코드 버전의 WCHAR 값을 참조하는 TCHAR 값의 수를 반환합니다.
다음 문자열 함수는 문자 집합의 모든 문자에서 작동한다는 점에서 tolower 및 toupper 와 같은 표준 C 함수와 다릅니다. 예를 들어 CharLower 함수를 사용하면 애플리케이션에서 umlaut(Ü)이 있는 대문자 U를 소문자(ü)로 변환할 수 있습니다. 문자 집합에 대한 자세한 내용은 싱글 바이트 문자 집합을 참조하세요.
함수 | 설명 |
---|---|
CharLower | 문자 또는 문자열을 소문자로 변환합니다. |
CharLowerBuff | 문자열을 소문자로 변환합니다. |
CharNext | 문자열의 다음 문자로 이동합니다. |
CharPrev | 문자열의 이전 문자로 이동합니다. |
CharUpper | 문자 또는 문자열을 대문자로 변환합니다. |
CharUpperBuff | 문자열을 대문자로 변환합니다. |
다음 문자열 함수는 사용자가 선택한 언어의 의미 체계에 따라 문자를 결정합니다. 이러한 함수는 유니코드를 사용할 수 있습니다.
함수 | Description |
---|---|
IsCharAlpha | 문자가 사전순인지 여부를 확인합니다. |
IsCharAlphaNumeric | 문자가 영숫자인지 여부를 확인합니다. |
IsCharLower | 문자가 소문자인지 여부를 확인합니다. |
IsCharUpper | 문자가 대문자인지 여부를 확인합니다. |
다음 표에서는 표준 CRT(C 런타임) 함수에 대한 유니코드 확장을 보여 줍니다. 앞에서 설명한 것처럼 StrSafe 함수는 문자열을 더 안전하게 처리할 수 있도록 하며 애플리케이션의 보안을 강화하도록 권장됩니다.
표준 CRT 함수 | 문자열 함수 | StrSafe 함수 |
---|---|---|
sprintf | wsprintf | |
vsprintf | wvsprintf |
문자열 리소스
리소스에서 문자열을 유지하는 애플리케이션은 최소한의 노력으로 새 언어로 번역할 수 있습니다. 원본 모듈에서 문자열을 검색하는 대신 리소스 파일의 문자열을 변환하고 애플리케이션을 다시 연결할 수 있습니다. 또한 문자열 리소스를 사용하면 동일한 소스 파일에서 유니코드 및 비유니코드 버전의 애플리케이션을 쉽게 만들 수 있습니다.
LoadString 함수는 애플리케이션의 실행 파일에서 문자열 리소스를 로드합니다. FormatMessage 함수는 문자열 리소스를 로드하고 문자열에 포함될 수 있는 서식 옵션을 해석합니다.
이진 형식의 리소스는 유니코드 형식으로 저장됩니다. 리소스를 로드할 때 애플리케이션은 리소스 함수의 유니코드 버전(예: LoadStringW)을 사용하여 리소스를 유니코드 데이터로 가져올 수 있습니다.
16비트 문자열 리소스의 경우 최대 길이는 255자입니다. 32비트 문자열 리소스의 경우 최대 길이는 65535자입니다.