wchar_t 혹은 std::wstring 에서 한글인지 영어인지 어떻게 판별하나요?

kid1402의 이미지

wchar_t[LENGTH] 또는 std::wstring 으로 문자열을 관리하고 있습니다

이 문자열이 영어인지 한글인지 체크해서 한 경우를 막아버리는 기능이 필요하게 됬습니다.

char 에서 쓰이는 isAlphabet 함수로 문자열을 하나씩 빼와서 일일히 비교하는 수 밖에는 없나요?

좀더 세련된 방법을 아시는 분은 한 수 부탁드립니다!

snowall의 이미지

음... 그럼, "char 에서 쓰이는 isAlphabet 함수로"라는 문자열은 한글인가요? 아니면 영어인가요?

피할 수 있을때 즐겨라! http://melotopia.net/b

comafast의 이미지

말씀하신대로 isXXX 함수로 문자한개씩 비교해서 처리합니다. 세련된 방법이라도 내부적으로는 그렇게 동작하구있구요.
c/c++ 기본 런타임 라이브러리는 영어만 지원하고, 한글은 지원하지 않습니다.
문제상황이 영어가 아니면 한글로 인식하시려나 본데, 말씀하신 함수로 가능할것 같네요. (아스키코드 범위를 영어로 인식한다는 전제하에...)
한글인지 아닌지를 알려면 복잡합니다. 이런걸 처리하려면, wstring이 유니코드 이어야 하고,
유니코드 표준문서를 읽어보시고 언어별 코드범위를 체크해서 판별해야합니다.

에러처리를 놓고 보면 좀 골치아픈 문제들이 남아있긴합니다.
abc한글初めまして: 이렇게 다중언어 판별하는게 어렵습니다.