📄 uni_char.cpp
字号:
// UNI_CHAR.cpp: implementation of the UNI_CHAR class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "UNI_CHAR.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
// UNI_CHAR.cpp: implementation of the UNI_CHAR class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "UNI_CHAR.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
//char* UNI_CHAR::UniCodeC[19];
//char* UNI_CHAR::UniCodeV[21];
//char* UNI_CHAR::UniCodeJ[28];
char *UNI_CHAR::UniCodeC[19]={"ぁ","あ","い","ぇ","え","ぉ","け","げ","こ","さ","ざ","し",
"じ","す","ず","せ","ぜ","そ","ぞ"};
//蜡聪内靛 茄臂 吝己 鉴辑钎
char* UNI_CHAR::UniCodeV[21]={"た","だ","ち","ぢ","っ","つ","づ","て","で","と","ど","な",
"に","ぬ","ね","の","は","ば","ぱ","ひ","び"};
//蜡聪内靛 茄臂 辆己 鉴辑钎
char* UNI_CHAR::UniCodeJ[28]={" ","ぁ","あ","ぃ","い","ぅ","う","ぇ","ぉ","お","か","が","き",
"ぎ","く","ぐ","け","げ","ご","さ","ざ","し","じ","ず","せ","ぜ","そ","ぞ"};
UNI_CHAR::UNI_CHAR()
{
/* char *tmpUniCodeC[19]={"ぁ","あ","い","ぇ","え","ぉ","け","げ","こ","さ","ざ","し",
"じ","す","ず","せ","ぜ","そ","ぞ"};
//蜡聪内靛 茄臂 吝己 鉴辑钎
char* tmpUniCodeV[21]={"た","だ","ち","ぢ","っ","つ","づ","て","で","と","ど","な",
"に","ぬ","ね","の","は","ば","ぱ","ひ","び"};
//蜡聪内靛 茄臂 辆己 鉴辑钎
char* tmpUniCodeJ[28]={" ","ぁ","あ","ぃ","い","ぅ","う","ぇ","ぉ","お","か","が","き",
"ぎ","く","ぐ","け","げ","ご","さ","ざ","し","じ","ず","せ","ぜ","そ","ぞ"};
// 檬扁拳甫 绢痘霸 秦具 且瘤 葛福摆促..
// 弊矾唱 老窜 箭磊父 啊瘤绊 魄窜窍扁 锭巩俊..
*/
}
UNI_CHAR::~UNI_CHAR()
{
}
BOOL UNI_CHAR::CheckString(CString str)
{
BYTE *cComp;
int nLength = str.GetLength();
cComp = (BYTE*)str.GetBuffer(nLength);
for (int i=0; i < nLength; i++)
{
#ifdef KOR_VER
int nCode = 949;//korea
#endif
#ifdef CHN_VER
int nCode = 936; //china
#endif
#ifdef ENG_VER
int nCode = 1252; //English
#endif
if ( IsDBCSLeadByteEx(nCode,str.GetAt(i)) ) { // 茄臂磊家老 版快.
ASSERT(i < nLength-1);
#ifdef KOR_VER
CVJ cvj;
cvj = UNIDivChar(((LPSTR)(LPCTSTR)str)+i);
if (!CheckUNIChar(cvj)) {
return FALSE;
}
#endif
#ifdef CHN_VER
BYTE cTemp[2];
memcpy(cTemp,cComp+i,sizeof(BYTE)*2);
int nLen = MultiByteToWideChar(CP_ACP, 0,(char*)cTemp, -1, NULL, NULL);
LPWSTR lpszW = new WCHAR[nLen];
MultiByteToWideChar(CP_ACP, 0, (char*)cTemp, -1, lpszW, nLen);
WORD wTemp = *(WORD *)lpszW;
delete[] lpszW;
if(wTemp < 0x4e00 || wTemp > 0x9fa5){
return FALSE;
}
#endif
i ++;
} else { // 康巩 磊家老 版快.
if((cComp[i] >= 48 && cComp[i] <= 57) ||
(cComp[i] >= 64 && cComp[i] <= 90) ||
(cComp[i] >= 97 && cComp[i] <= 122))
{
}
else{
return FALSE;
}
//TRACE("(%c) \n", temp.GetAt(i));
}
}
return TRUE;
}
BOOL UNI_CHAR::CheckUNIChar(CVJ cvj)
{
BOOL rev = TRUE;
if (cvj.C>=0 && cvj.C<19) {
//TRACE("(%s) ", UniCodeC[cvj.C]);
}
else {
//TRACE("(-) ");
rev = FALSE;
}
if (cvj.V>=0 && cvj.V<21) {
//TRACE("(%s) ", UniCodeV[cvj.V]);
}
else {
//TRACE("(-) ");
rev = FALSE;
}
if (cvj.J>=0 && cvj.J<28) {
//TRACE("(%s) \n", UniCodeJ[cvj.J]);
}
else {
//TRACE("(-) \n");
}
return rev;
}
UNI_CHAR::CVJ UNI_CHAR::UNIDivChar(char *pDivWord)
{
CVJ Result; //函券茄 檬己 吝己 辆己 蔼阑 逞辨 函荐
int cCode,vCode,jCode; //蜡聪内靛 茄臂俊辑狼 檬己/吝己/辆己狼 内靛蔼
char inputSyllable[3]; //逞绢柯 牢磊甫 汗荤窍咯 捞侩
strncpy(inputSyllable,pDivWord,2);//窜绢狼 霉臂磊甫 汗荤
inputSyllable[2]=NULL;//strncpy绰 NULL阑 嘿捞瘤 澈栏骨肺 碍力肺 持绢淋
//蜡聪内靛肺 函券, 肯己屈 内靛甫 荤侩秦具窍搁 羔 林技筷(内靛抛捞喉 鞘夸)
int nLen = MultiByteToWideChar(CP_ACP, 0,inputSyllable, -1, NULL, NULL);
LPWSTR lpszW = new WCHAR[nLen];
MultiByteToWideChar(CP_ACP, 0, inputSyllable, -1, lpszW, nLen);
cCode =(lpszW[0] - 0xAC00) / (588); //588=21*28(檬己)
vCode =((lpszW[0] - 0xAC00) % (588)) / 28; //588=21*28(吝己)
jCode =(lpszW[0] - 0xAC00) % 28; //(辆己)
Result.C=cCode;
Result.V=vCode;
Result.J=jCode;
delete []lpszW;
return Result;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -