유니코드 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바이트 입니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
사용할 수는 있는데
사용할 수는 있는데 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바이트 입니다.
댓글 달기