본문 바로가기

쓰기

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

일단 쓰여있는 방법은

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/ef1/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/Download151]
List of Articles
번호 제목 글쓴이 조회 수 추천 수 날짜sort 최근 수정일
공지 Talk [필독] 테스트필터 사용시 주의사항 라파에 155439   2008-08-03 2008-12-16 00:03
189 Archive [플러그인,소스] FixLine 테스트버전 081216 file Hide_D 12340   2008-12-16 2008-12-16 13:20
 
188 OtherFiles [프로그램] 필터 테스트 프로그램 [13] file Hide_D 27998   2008-12-16 2013-06-22 22:20
 
187 Archive [소스] ATCode 테스트버전 20081203 file whoami 11548   2008-12-16 2009-01-06 00:51
 
186 OtherFiles 히데님, 픽스라인 관련 메모장 파일입니다. [1] file astral 15603   2008-12-16 2008-12-16 01:19
 
185 Talk Small Talk + StrongRoom = New Small Talk! Hide_D 12177   2008-12-16 2008-12-16 00:06
다시 통합 완료했습니다. 카테고리는 3개로 돌아갑니다. Talk : 내용 무 Archive : 플러그인 관련 파일들이 올라갑니다. OtherFiles : 플러그인 관련은 아니지만 파일인 경우! 카테고리 작업도 완료했습니다.  
184 Archive [플러그인,소스] FixLine 테스트버전 081215 [5] file Hide_D 15213   2008-12-15 2008-12-16 01:18
 
183 Archive [플러그인,소스] FixLine 테스트버전 081214_2 file Hide_D 12524   2008-12-15 2008-12-15 00:04
 
182 Archive [플러그인,소스] FixLine 테스트버전 081214 [1] file Hide_D 12576   2008-12-14 2008-12-14 21:13
 
181 Talk [질문] MBCS와 #UNICODE의 관계 [7] 호기심맨 13663   2008-12-14 2008-12-14 22:16
무모한 용기가 화를 부른다고.... '나도 필터란걸 만들어보자' 하고 쓸데없는 결심을 하는 바람에(결심만)...... 요새 1년을 기다려온 투3도 손도못대고 ....... Visual Studio 2005란거 깔고 낑낑대고 있네요.. (왜인지는 모르겠지만 현제 다운받은 아랄소스...  
180 Archive [플러그인] ATCode 테스트 버전 20081210 file whoami 11500   2008-12-11 2008-12-11 00:07
 
179 Archive [플러그인] ATCode 테스트 버전 20081203 (log 없는 버전) file whoami 12734   2008-12-05 2008-12-05 23:06
 
178 Archive [플러그인] DenyWord 테스트 버전 20081204 [1] file Hide_D 11814   2008-12-04 2008-12-05 00:52
 
177 Archive [플러그인] ATCode 테스트 버전 20081203 (log 버전) [1] file whoami 12050   2008-12-03 2009-01-06 00:59
 
176 Archive [플러그인, 소스] DenyWord 테스트 버전 20081203(4) [버그] [1] file Hide_D 11557   2008-12-03 2008-12-03 17:58
 
175 Archive [플러그인, 소스] DenyWord 테스트 버전 20081203 file Hide_D 10898   2008-12-03 2008-12-03 10:41
 
174 Archive [플러그인] ATCode 테스트 버전 20081202 file whoami 11167   2008-12-03 2009-01-06 00:59
 
173 Talk 히데님께서 말씀하신 기리기리 오류문제 입니다. [3] file 유르_레릴 14130   2008-11-30 2008-12-30 08:53
 
172 Archive [플러그인, 소스] Caption 테스트 버전 20081128 [11] file whoami 12253   2008-11-28 2009-01-31 23:34
 
171 Archive [플러그인] CustomDic 0.3 20081125 [오류 =ㅅ=] [2] file Hide_D 11748   2008-11-25 2008-11-26 15:19
 
170 Talk 일단 필터들 수리(...) 해야겠군요 Hide_D 12115   2008-11-21 2009-01-06 01:09
CustomDic도 크진 않지만 버그가 보고된 상황이고 (진짜 버그인진 모름) DumpText도 고쳐야되고(Thread 추가) CustomScript(-_-+)도 버그가 몇군데 보이는군요. FixLine 잠시 미룹니다.