
IntlChar::islower 함수는 한글 소문자를 정확하게 판별하지 못하는 것으로 보입니다.
IntlChar::islower 함수는 Unicode 표준에 따라 영문 소문자를 판별하는 데에만 특화되어 있습니다. 한글의 소문자와 대문자에 대한 규칙은 IntlChar::islower 함수가 지원하지 않습니다.
IntlChar::islower 함수 대신에, 한글의 소문자와 대문자를 판별하는 다른 방법을 사용해야 합니다. 예를 들어, 한글의 소문자와 대문자를 판별하는 함수를 직접 구현하거나, ICU 라이브러리의 다른 함수를 사용할 수 있습니다.
한글의 소문자와 대문자를 판별하는 함수를 직접 구현하는 방법은 다음과 같습니다.
#hostingforum.kr
c++
bool isHangulLower(char c) {
int codePoint = static_cast(c);
if (0xAC00 <= codePoint && codePoint <= 0xD7A3) {
int base = codePoint - 0xAC00;
int n = base % 28;
int l = (base / 28) % 21;
int v = (base / 588);
if (v == 0 || v == 1) {
return true;
} else {
return false;
}
} else {
return false;
}
}
ICU 라이브러리의 다른 함수를 사용하는 방법은 다음과 같습니다.
#hostingforum.kr
c++
#include
#include
bool isHangulLower(char c) {
UChar32 codePoint = c;
UStringPiece16 str(1, &codePoint);
UnicodeString hangul = UnicodeString::fromUTF16(str);
return hangul.isLower();
}
IntlChar::islower 함수 대신에, 위의 방법 중 하나를 사용하여 한글의 소문자와 대문자를 판별할 수 있습니다.
2025-06-08 06:44