본문 바로가기

쓰기

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

일단 쓰여있는 방법은

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/a6b/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
249 Talk [질문] MBCS와 #UNICODE의 관계 [7] 호기심맨 13663   2008-12-14 2008-12-14 22:16
무모한 용기가 화를 부른다고.... '나도 필터란걸 만들어보자' 하고 쓸데없는 결심을 하는 바람에(결심만)...... 요새 1년을 기다려온 투3도 손도못대고 ....... Visual Studio 2005란거 깔고 낑낑대고 있네요.. (왜인지는 모르겠지만 현제 다운받은 아랄소스...  
248 Archive [플러그인,소스] FixLine 테스트버전 081214 [1] file Hide_D 12576   2008-12-14 2008-12-14 21:13
 
247 Archive [플러그인,소스] FixLine 테스트버전 081214_2 file Hide_D 12524   2008-12-15 2008-12-15 00:04
 
246 Archive [플러그인,소스] FixLine 테스트버전 081215 [5] file Hide_D 15213   2008-12-15 2008-12-16 01:18
 
245 Talk Small Talk + StrongRoom = New Small Talk! Hide_D 12177   2008-12-16 2008-12-16 00:06
다시 통합 완료했습니다. 카테고리는 3개로 돌아갑니다. Talk : 내용 무 Archive : 플러그인 관련 파일들이 올라갑니다. OtherFiles : 플러그인 관련은 아니지만 파일인 경우! 카테고리 작업도 완료했습니다.  
244 OtherFiles 히데님, 픽스라인 관련 메모장 파일입니다. [1] file astral 15603   2008-12-16 2008-12-16 01:19
 
243 Archive [소스] ATCode 테스트버전 20081203 file whoami 11548   2008-12-16 2009-01-06 00:51
 
242 OtherFiles [프로그램] 필터 테스트 프로그램 [13] file Hide_D 27998   2008-12-16 2013-06-22 22:20
 
241 Archive [플러그인,소스] FixLine 테스트버전 081216 file Hide_D 12340   2008-12-16 2008-12-16 13:20
 
240 OtherFiles fixline 테스트 [1] file 처음처럼만 15297   2008-12-16 2008-12-16 15:52
 
239 OtherFiles fixline 테스트 2차 file 처음처럼만 13341   2008-12-16 2008-12-16 15:52
 
238 Talk FixLine 테스트버전 081215 [1] file 그레이 20429   2008-12-16 2008-12-16 16:37
 
237 OtherFiles fixline 테스트 3차 [2] file 처음처럼만 16074   2008-12-16 2008-12-30 08:53
 
236 Archive [플러그인,소스] FixLine 테스트버전 081217 file Hide_D 12415   2008-12-17 2008-12-17 23:38
 
235 Talk [오류보고]ATcode 버퍼크기 무시 버그 [1] file HaruKaze 12813   2008-12-18 2009-01-06 00:56
 
234 Archive [플러그인,소스] FixLine 테스트버전 081219 file Hide_D 11449   2008-12-19 2008-12-19 13:03
 
233 Talk ezTransXP 플러그인 버그 =ㅅ=?? [2] Hide_D 12427   2008-12-20 2009-01-06 00:47
단순씨 사전 45608개 짜리 버전으로 테스트했을때 「すごい! えらい!! カッコイイ!!! さすが僕らのトライオン!」 이걸 번역하면 「대단해<히)! 대단하다! 멋있어! 과연 우리들의 트라이 온!」 요렇게 나오는데, 아랄트랜스에서 괄호제거 옵션을 ...  
232 Archive [플러그인,소스] FixLine 테스트버전 081220_2 [2] file Hide_D 13376   2008-12-20 2008-12-21 08:29
 
231 Archive [플러그인,소스] FixLine 테스트버전 081221 [5] file Hide_D 15475   2008-12-21 2008-12-22 02:30
 
230 Archive [플러그인,소스] FixLine RC 081222 file Hide_D 12576   2008-12-22 2008-12-22 11:55