유니코드 2바이트 문자(wchar_t)가 알파벳인지 아닌지 판별하고 싶습니다. C표준 isalpha함수를 그대로 사용할 수 있나요?
사용할 수는 있는데 locale의 영향을 받는다는 점은 유의하셔야 합니다. 예를 들어
setlocale(LC_ALL, "C"); // default locale assert(isalpha(L'ß') == 0); setlocale(LC_ALL, "german"); assert(isalpha(L'ß') != 0);
로케일에 상관없이, 영어 알파벳인지 여부를 판별하는 그런 함수는 없나요? --- "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)
영어의 알파벳만 고려한다면 locale은 상관 없겠네요. 그냥 isalpha()를 쓰면 되겠습니다.
iswalpha()가 있습니다. isalpha()는 char에서만 쓸수 있고 wchar_t에서 쓸려면 iswalpha()를 써야 합니다.http://www.opengroup.org/onlinepubs/009695399/functions/iswalpha.html
그리고 wchar_t는 윈도우에서는 2바이트지만 리눅스 gcc에서는 4바이트 입니다.
사용할 수는 있는데
사용할 수는 있는데 locale의 영향을 받는다는 점은 유의하셔야 합니다.
예를 들어
로케일에 영향을 받지않는 방법은 없나요?
로케일에 상관없이, 영어 알파벳인지 여부를 판별하는 그런 함수는 없나요?
---
"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)
영어의 알파벳만
영어의 알파벳만 고려한다면 locale은 상관 없겠네요.
그냥 isalpha()를 쓰면 되겠습니다.
iswalpha()가 있습니다.
iswalpha()가 있습니다. isalpha()는 char에서만 쓸수 있고 wchar_t에서 쓸려면 iswalpha()를 써야 합니다.
http://www.opengroup.org/onlinepubs/009695399/functions/iswalpha.html
그리고 wchar_t는 윈도우에서는 2바이트지만 리눅스 gcc에서는 4바이트 입니다.