본문 바로가기

쓰기

기본적으로 맨 마지막 글자를 보고
받침이 붙느냐 안붙느냐를 처리하게 되는데,

일단 쓰여있는 방법은

http://winp.egloos.com/1917711
http://ttongfly.net/zbxe/?document_srl=45333

걍 맨 뒷글자를 일일히 확인하는 방법이다.


그런데 뒤에 있는 문서의 글자 목록을 뺀어서 다음과 같은 코드로 확인해보았더니..

#include <stdio.h>
#include <tchar.h>
#include <vector>
#include <algorithm>

using namespace std;

int wmain()
{
    FILE * fp=_wfopen(L"Table.txt",L"wt,ccs=UTF-16LE");
    wstring wstrList=L"가갸거겨고교구규그기개걔게계과괘궈궤괴귀긔까꺄꺼껴꼬꾜꾸뀨끄끼깨꺠께꼐꽈꽤꿔꿰꾀뀌끠나냐너녀노뇨누뉴느니내냬네녜놔놰눠눼뇌 뉘늬다댜더뎌도됴두듀드디대댸데뎨돠돼둬뒈되뒤듸따땨떠뗘또뚀뚜뜌뜨띠때떄떼뗴똬뙈뚸뛔뙤뛰띄라랴러려로료루류르리래럐레례롸뢔뤄뤠뢰뤼릐마먀머며모묘무 뮤므미매먜메몌뫄뫠뭐뭬뫼뮈믜바뱌버벼보뵤부뷰브비배뱨베볘봐봬붜붸뵈뷔븨빠뺘뻐뼈뽀뾰뿌쀼쁘삐빼뺴뻬뼤뽜뽸뿨쀄뾔쀠쁴사샤서셔소쇼수슈스시새섀세셰솨쇄 숴쉐쇠쉬싀싸쌰써쎠쏘쑈쑤쓔쓰씨쌔썌쎄쎼쏴쐐쒀쒜쐬쒸씌아야어여오요우유으이애얘에예와왜워웨외위의자쟈저져조죠주쥬즈지재쟤제졔좌좨줘줴죄쥐즤짜쨔쩌쪄 쪼쬬쭈쮸쯔찌째쨰쩨쪠쫘쫴쭤쮀쬐쮜쯰차챠처쳐초쵸추츄츠치채챼체쳬촤쵀춰췌최취츼카캬커켜코쿄쿠큐크키캐컈케켸콰쾌쿼퀘쾨퀴킈타탸터텨토툐투튜트티태턔테 톄톼퇘퉈퉤퇴튀틔파퍄퍼펴포표푸퓨프피패퍠페폐퐈퐤풔풰푀퓌픠하햐허혀호효후휴흐히해햬헤혜화홰훠훼회휘희";
    sort(wstrList.begin(),wstrList.end());
    wchar_t wcBase=wstrList[0];
    wstring::iterator iterList=wstrList.begin();
    while(iterList!=wstrList.end())
    {
        fwprintf(fp,L"%c 0x%04X %5d %3d\n",*iterList,*iterList,*iterList,(*iterList)-wcBase);
        wcBase=*iterList;
        iterList++;
    }
    fclose(fp);
    return 0;
}


UTF16-LE에서는 저 글자들이 모두 28씩 차이가 난다는 것을 발견했다 -_-;;

그래서 2번째 페이지에 나온 구분 함수를 개량한 버전이...

bool Has3rdCh(wstring * pstrText)
{
    if(pstrText->length()==0)
        return false;

    bool bRet=false;
    wchar_t wcLast=*(pstrText->end()-1);
    wchar_t wszLast[2]={wcLast,L'\0'};
    if(wcLast<=0x0080)
    {
        if(wcLast>=L'A'&&wcLast<=L'Z')
            wcLast=wcLast-'A'+'a';
        switch(wcLast)
        {
        case L'm':
        case L'n':
        case L'l':
        case L'c':
        case L'M':
        case L'N':
        case L'L':
        case L'C':
        case L'1':
        case L'3':
        case L'6':
        case L'7':
        case L'8':
        case L'0':
            bRet=true;
            break;
        default:
            if(pstrText->length()>=2)
            {
                wchar_t wc2nd = *(pstrText->end()-2);
                if(wc2nd>0x80)
                    break;

                if(wc2nd>=L'A'&&wc2nd<=L'Z')
                    wc2nd=wcLast-'A'+'a';
                if(wc2nd==L'n'&&wcLast==L'g')
                    bRet=true;
                else if(wc2nd==L'c'&&wcLast==L'k')
                    bRet=true;
                else if(wc2nd==L'r'&&wcLast==L'g')
                    bRet=true;
                else if(wc2nd==L'l'&&wcLast==L'e')
                    bRet=true;
                else if(wc2nd==L'n'&&wcLast==L'e')
                    bRet=true;
            }
            break;
        }
    }
    else if(wcLast>=0xAC00&&wcLast<0xD7B0)
    {
        if((wcLast-0xAC00)%28!=0)
            bRet=true;
    }

    return bRet;
}

대강 요렇다
(wstring 클래스를 사용하니 #include <string> 필수)
영어도 약간 처리가 되는 정도인데,
뭐 이 이상을 쓸일 없을듯 하니 걍 놔둘 생각
분류 :
Talk
조회 수 :
12783
등록일 :
2009.05.23
20:06:21
엮인글 :
https://arallab.hided.net/24003/859/trackback
게시글 주소 :
https://arallab.hided.net/board_devtalk/24003

whoami

2009.07.08
22:03:48
아랄 프로젝트는 아니지만 도움이 될 것 같아서 관련 파일을 하나 올립니다.

이건 예전에 나니카.. 라는 데스크탑 액세서리용으로 만들어진 조사 처리 모듈입니다.
한글 조사체크 부분만 보면 되니까 내용 이해에 크게 문제될 것은 없을겁니다.

particlemakoto-2.3.zip
첨부 :
particlemakoto-2.3.zip [File Size:92.9KB/Download149]
List of Articles
번호 제목 글쓴이 날짜 조회 수sort
공지 Talk [필독] 테스트필터 사용시 주의사항 라파에 2008-08-03 155437
124 Talk 하루카제님 요청하신거 C++로 만들어봤습니다. [3] Hide_D 2009-01-05 10779
123 Talk 쓰레드를 사용하려고 하는데 제대로 안되네요; [2] Hide_D 2008-12-25 10808
122 Talk 픽스 라인 연기로 인한 임시 대책 Hide_D 2008-09-26 10821
121 Talk 옵션 스트링 버퍼 말이죠? [1] Hide_D 2008-08-11 10830
120 Talk 라파에님 다시 한번 테스트해보세요. [3] file Hide_D 2008-08-17 10896
119 Talk 디나이코필터 [2] my vagina 2008-12-31 10993
118 Talk 아 이런 클라나드 [1] file my Vagina 2008-07-13 11070
117 Talk SVN 말이죠 ㅠ_ㅠ [3] file Hide_D 2008-09-29 11128
116 Talk Re: SOW 모드의 신기한 점? file whoami 2008-07-23 11209
115 Talk 사용자대본 지나가다정착한이A님 특별판[...] file Hide_D 2008-10-02 11242
114 Talk CustomDic의 치환문자열에 대해 ( Hide님께) [2] 호기심맨 2009-01-03 11323
113 Talk 조만간 멀티플러그인은 기본 기능으로 흡수시킬까 합니다. 아랄 2008-09-21 11346
112 Talk [질문] CustomDic필터와 FixLine의 셋팅순서 [4] 호기심맨 2009-01-03 11404
111 Talk FixLine 기능 추가 [1] Hide_D 2009-03-13 11416
110 Talk 역시 번역 플러그인 테스트용으론 Hide_D 2008-07-21 11417
109 Talk 히데님이 말씀하신 테스트파일 [2] file 유르_리샤 2008-12-29 11530
108 Talk 빈공간[...] file Hide_D 2008-08-16 11531
107 Talk 일단, 옵션창 이렇게 생기면 되나요? file Hide_D 2008-09-22 11569
106 Talk ATCode UI 버그 [1] Hide_D 2008-11-01 11730
105 Talk Fixline용 텍스트 파일.... [3] file 처음처럼만 2008-12-29 11753