본문 바로가기

쓰기

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

일단 쓰여있는 방법은

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
조회 수 :
12782
등록일 :
2009.05.23
20:06:21
엮인글 :
https://arallab.hided.net/24003/9b5/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
번호 제목 글쓴이 조회 수 추천 수 날짜 최근 수정일
공지 Talk [필독] 테스트필터 사용시 주의사항 라파에 155436   2008-08-03 2008-12-16 00:03
124 Talk 위키 링크 레벨업! [테스트] [12] Hide_D 18387   2009-12-17 2010-01-10 22:42
[와 ]를 세번씩 쓰면 링크가 되도록 바꿔봤습니다. ㄹ솘ㅎ[[[아랄트랜스]]]ㅎㄹ셔ㅗㅓ 잘 되려나?  
123 Talk 번역기(eztransXP)가 만드는 몇가지 문제들 - 1 [1] Hide_D 13433   2009-12-16 2009-12-16 21:32
이지트랜스가 만드는 몇가지 문제에 대해서 다뤄보려고 합니다. 우선 첫번째로 일본어의 히라가나, 또는 가타카나 한글자가 번역기로 입력될경우 결과물이 공백(length = 0)이라는 문제입니다. 이 문제는 대개 게임 엔진에서 '강제로 한글자씩 출력하는 경우'(...  
122 Talk 필터도 아래에 Context를 추가할 수 있나요? [3] Hide_D 11940   2009-12-14 2009-12-14 22:18
아래에 쓰여있는게 Memory Context이긴 한데, 그냥 훅 포인트 한정으로 한개씩 주는게 아니라 제한없이 필터에서도 저 아래 '별명'을 추가할 수 있었으면 좋겠네요. 그렇게하면, 단일 코드로 모든 내용이 다 지나가는 경우더라도 필터로 걸러서 따로따로 처리...  
121 Talk 0.3에서 전국란스의 경우 [1] Hide_D 15178   2009-12-13 2009-12-14 02:10
ats파일을 만들어서 동작할경우 문제가 산넘어 산입니다. 1. 주소 문제 2. Rance7으로 바꾸었을때 AppLocale의 미묘한 작동 ㄹㅋ  
120 Talk INNODB 테스트 Hide_D 12769   2009-12-09 2009-12-09 17:01
속도 향상을 위해 INNODB로 바꿔봅니다. 테스트 개시  
119 Talk Windows7에서 0.3 현재시점으로 안돌아갑니다.ㅜ [6] Hide_D 14656   2009-12-04 2009-12-09 23:27
이유가 뭘까요  
118 Talk 고칠거? [10] Hide_D 13651   2009-11-28 2009-12-17 18:13
아랄 처음 켰을때 프로세스 먼져 보이는거 아랄만 아랄로 프로세스에 안뜬다는거. by 피시 제 덧[..] 이지트랜스 경로 지정하면 앞으론 고정해봅시다 ㅇㅇ  
117 Talk 튕기는 문제에 대해서 [6] Hide_D 13286   2009-11-26 2009-12-15 02:55
뭐 다들 아시다시피(?) 대부분의 문제는 보안툴이나 백신에 대해선 충돌하기 때문인데, 여태까지는 소극적으로 대응해왔는데 이젠 좀 적극적으로 뭐가 문제인지를 찾아봐야겠습니다. 해서 다음을 조사해서 보고서를 작성하는 프로그램을 만들어볼 예정입니다~ ...  
116 Talk [질문] Http POST전송에 대한 이것저것 [3] 호기 24751   2009-09-22 2009-09-23 08:00
에고 Hide_D님과 HaruKaze님덕에 어찌어찌 POST전송을 할수 있게 되었네요 . 다시한번 두분께 너무 감사드리고요.. 전송해서 결과는 받는것은 되지만... 내용에 궁금한것이 두가지 있어서요 이렇게 다시 질문 올립니다. 우선 POST로 Header를 전송할때 말이에...  
115 Talk QuickTrans2 자료 백업 file Hide_D 13246   2009-08-26 2009-08-26 02:53
 
114 Talk [소스] ConsoleTrans + 질문 [1] file Hide_D 13000   2009-08-11 2009-08-12 23:34
 
113 Talk FixLine v2 길이제한 '원문 길이' 버그 Hide_D 12853   2009-07-27 2009-07-27 23:05
긴경우는 잘 동작합니다만, 원문 보다 짧은경우에는 그냥 짧은 상태로 유지가 되어서 덮어쓰기 사용시 몇가지 문제가 발생했습니다. 이건은 조만간 빈칸을 채우던가 해서 해결해야겠습니다. + 이 기능은 CmdFilter의 '원문 덮어쓰기'와 같은 기능입니다.  
112 Talk 정식 아랄 플러그인으로 요청하시고 싶다면 Hide_D 14234   2009-07-10 2009-07-10 18:29
원칙적으로는 관리자님께 요청하는 것이 맞지만 관리자님은 유니크 몹이시기 때문에[...] 절 부르시면 소환해 드립니다. 원클릭 서비스도 가능할지도[..]  
» Talk 한글 조사 처리 [1] Hide_D 12782   2009-05-23 2009-07-08 22:03
기본적으로 맨 마지막 글자를 보고 받침이 붙느냐 안붙느냐를 처리하게 되는데, 일단 쓰여있는 방법은 http://winp.egloos.com/1917711 http://ttongfly.net/zbxe/?document_srl=45333 걍 맨 뒷글자를 일일히 확인하는 방법이다. 그런데 뒤에 있는 문서의 글자...  
110 Talk AralTrans 필터 물갈이할 예정입니다.... [1] Hide_D 14725   2009-05-21 2009-05-22 01:55
일단 제가 방학을 시작하기도 했고 하니 아랄트랜스 내에서 제가 제작한 필터를 싹 물갈이해볼 생각입니다. 우선 물갈이 대상 CustomDic 0.4 KDC CustomScript v2 DumpText v2 FixLine v3 작업을 위해서 다음과 같은 라이브러리를 만들어서 걍 복붙 시전할 계...  
109 Talk 참 오묘한 윈도우~ 호기 13568   2009-04-04 2009-04-04 01:02
실수로.... malloc으로 잡은걸 HeapFree 하고 있었네요... (머 정확히 말자면 HeapCreate로 새 힙영역 확보하고 할당 해제 하는걸 구축했습니다만.... 정작 할당부분에서 malloc을썼던거죠) 문제는 이렇게 잘못짠걸 1개월이나 지난후에 알았다는 겁니다. 즉 그...  
108 Talk 아나 ㅅㅂ VS2008 안쓸랍니다. [5] Hide_D 12867   2009-04-02 2009-04-03 21:16
제컴이 ㅄ인지 설치할때 ㅄ이 된건진 잘 모르겠는데, 쓰기 갑갑해 미치겠습니다ㅣ -_-; Visual Studio 2008 SP1입니다. 자주 발생하는 현상이 예를 들어 int j=0; for(int i=0;i<28;i++) { j+=i; } for(int i=0;i<28;i++) { j+=i; } _wsprintf(L"%d",j); 요런 ...  
107 Talk FixLine '인수 추가' 창 새 디자인 [4] file Hide_D 18340   2009-03-26 2009-03-27 02:07
 
106 Talk 히데님이 부탁하신거.... [1] file 류제로 19458   2009-03-21 2011-06-28 01:25
 
105 Talk 번역 플러그인 난해한 문제???? [3] 호기 14864   2009-03-15 2009-10-20 18:06
지금 ML_Trans라는 번역 플러그인을 만들고 있는데 좀 이해가 안가는 문제가 생기네요.. 아랄에 적용시킨후 다른 번역 플러그인으로 바꿀때는 아무 문제가 안생깁니다 그러니까 번역 플러그인을 EzTransXp<->ML_Trans로 마구 여러번 바꾸어도 문제는 안일어 납...