
	                	                 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