2바이트 문자가 알파벳인지 판별하기

noblepylon의 이미지

유니코드 2바이트 문자(wchar_t)가 알파벳인지 아닌지 판별하고 싶습니다.
C표준 isalpha함수를 그대로 사용할 수 있나요?

doldori의 이미지

사용할 수는 있는데 locale의 영향을 받는다는 점은 유의하셔야 합니다.
예를 들어

setlocale(LC_ALL, "C"); // default locale
assert(isalpha(L'ß') == 0);
 
setlocale(LC_ALL, "german");
assert(isalpha(L'ß') != 0);

noblepylon의 이미지

로케일에 상관없이, 영어 알파벳인지 여부를 판별하는 그런 함수는 없나요?
---
"The truth will make you free."(John 8:32)
"I am the way, and the truth, and the life: no one comes to the Father but through Me."(John 14:6)

---
“내게 능력주시는 자 안에서 내가 모든 것을 할 수 있느니라.”(빌립보서 4:13)

doldori의 이미지

영어의 알파벳만 고려한다면 locale은 상관 없겠네요.
그냥 isalpha()를 쓰면 되겠습니다.

dg의 이미지

iswalpha()가 있습니다. isalpha()는 char에서만 쓸수 있고 wchar_t에서 쓸려면 iswalpha()를 써야 합니다.
http://www.opengroup.org/onlinepubs/009695399/functions/iswalpha.html

그리고 wchar_t는 윈도우에서는 2바이트지만 리눅스 gcc에서는 4바이트 입니다.