C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[36436] Re:문자열에서 한글과 영문을 어떻게 구분하나요?
hz [heynet] 3159 읽음    2004-07-22 19:32
2바이트 문자(MBCS)로 처리 할 경우 보편적으로 상위 1바이트를 비교해서
검사하는 방법을 이용 할 수 있습니다. (몇 가지 예외가 있지만..)

for(itCount = 0; itCount < string.Length(); itCount ++) {
  if( (string.c_str()[itCount] & 0x80) == 0x80 ) {
    // - itCount~itCount+1까지 2바이트가 한글
    // - 한글 일 때 처리
    itCount ++; // 한글문자 다음 바이트로 넘김
  }
}

유니코드 이용은 조금 더 까다롭습니다.
비슷한 질문이 있으니 참고 하시기 바랍니다.
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=29516


ps: 여담이지만 기존의 있는 것 이상의 것을 구현 할 때는, 완전히 새로 만드실 것을 생각 하셔야
  합니다. 이를테면 '캐롯을 기울일수도 없고' 하신 부분은 캐럿을 기울 일 수 있는 방법을 찾기보다
  일러스트레이터 처럼 곡면을 따라 바운드되는 텍스트 입/출력의 구현을 고려하시는 것이 더 개발적인
  측면에서의 효율이 높습니다. 컴포넌트로 만드신다면 더 할 나위 없겠죠.

leo21c 님이 쓰신 글 :
: C++빌더로 텍스트 프로그램을 만들려고 합니다.
: 유니코드로 처리하면 구분을 할 수 있을 것 같기는 한데...
:
: 제가 하고자 하는 것입니다.
:
: 한글, 영문, 그밖의 문자를 키보드로 입력받아 화면에 보이게 하는 것입니다. Edit처럼~
: 마우스로 드레그 한 부분의 폰트, 크기를 변경할 수도 있고요.
: 만약 폰트가 한글을 지원하지 않는 영문 폰트라면 한글을 무조건 "굴림"으로 처리하려고 합니다.
: 그러기 위해서는 이 글자가 한글인지 영문인지 알아야 하죠.
: 그리고, 한글자 치면 커서(캐롯)을 폰트사이즈 만큼 옆으로 이동시켜야 하는데
: 영문은 간단하게 글자수를 알수 있지만 한글은 자음/모음, 글자하나, 각각 어떻게 입력받았는지
: 확인을 해야만 캐롯을 이동시킬수 있잖아요. 정말 어떻게 처리해야 할지 모르겠습니다.
:
: 다음에는 커브모양으로도 글을 쓸수 있도록(일러에서 커브따라서 글씨쓰기) 만들어야 하는데
: 캐롯을 기울일수도 없고 공부를 많이 해야겠다는 생각이드는군요.
:
: 조언 부탁드립니다.

+ -

관련 글 리스트
36422 문자열에서 한글과 영문을 어떻게 구분하나요? leo21c 1433 2004/07/22
36436     Re:문자열에서 한글과 영문을 어떻게 구분하나요? hz 3159 2004/07/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.