\r
int CHNLIB_UTF8_GetCharacterType(char c)\r
{\r
+ //[UTF-8]\r
//UTF-8文字列中の1バイトcが、UTF-8文字列中でどのような役割を持つのかを返す。\r
//0:マルチバイト文字の後続バイト\r
//1:1バイト文字\r
//2以上の数値n:nバイト文字の最初のバイト。後続のn個のマルチバイト後続バイトと組み合わせて一つの文字を示す。\r
//判断不能な場合は-1を返す。\r
- //[UTF-8]\r
if(((c >> 6) & 3) == 2){\r
//マルチバイト後続バイト\r
//10xxxxxx\r
\r
int CHNLIB_UTF8_GetStringLengthByCharacter(const char s[])\r
{\r
+ //[UTF-8]\r
//sをUTF-8文字列として解釈し、文字としては何文字で構成された文字列かを返す。\r
//無効な(マルチバイトの一部が欠けているような)文字はカウントしない。\r
- //[UTF-8]\r
int i, mbsize, n;\r
int count;\r
\r
\r
uint CHNLIB_UTF8_GetNextUnicodeOfCharacter(const char s[], const char **next)\r
{\r
+ //[UTF-8]\r
//sをUTF-8文字列として解釈し、その文字列の最初の文字のUnicodeを返す。\r
//また、nextがNULLでないとき、*nextに、この文字列中で次の文字にあたる部分へのポインタを格納する。\r
//s==NULLの時、*nextの値は変更されない。\r
//次の文字が存在しない場合は、*nextはs中の終端文字へのポインタとなる。また、戻り値は0となる。\r
//無効な(マルチバイトの一部が欠けているような)文字は無視する。\r
- //[UTF-8]\r
int i, n, mbsize;\r
uint unicode;\r
\r
\r
int CHNLIB_UTF8_CompareString(const char s[], const char search[])\r
{\r
+ //[UTF-8]\r
//s,searchをUTF-8文字列として解釈し、s[]の先頭からsearch[]と比較し、searchの終端まで一致したらTrue, 一致しなかったらFalseを返す。\r
//終端文字は比較せず、search[]に含まれる文字(終端文字除く)がすべて入っていれば一致とみなす。\r
//ただし、searchの先頭文字が終端文字、つまり空文字列だった場合は、常にFalseを返す。\r
- //[UTF-8]\r
int i, i_max;\r
\r
if(s == NULL || search == NULL){\r
\r
int CHNLIB_UTF8_CompareString_LeftHand(const char s[], const char search[])\r
{\r
+ //[UTF-8]\r
//s,searchをUTF-8文字列として解釈し、二つの文字列がどの程度一致するか調べる。前方一致。\r
//戻り値は、終端文字を除く、同一だった文字数。\r
- //[UTF-8]\r
int i, i_max;\r
\r
if(s == NULL || search == NULL){\r
\r
int CHNLIB_UTF8_GetByteSizeFromLengthByCharacter(const char s[], int start, int end)\r
{\r
+ //[UTF-8]\r
//sをUTF-8文字列として解釈し、start番目の文字からend番目の文字までの占めるバイト数を返す。\r
//start番目の文字が終端文字以降の文字を指している場合は0を返す。\r
- //end番目の文字が\r
- //[UTF-8]\r
+ //end番目の文字が終端文字以降の文字を指していても、endが文字列終端を指している場合と同値になる。\r
int i;\r
const char *p;\r
\r
\r
uint CHNLIB_UTF8_GetCountOfContain(const char s[], const char search[])\r
{\r
- //文字列s中に、文字列searchがいくつ含まれているかを返す。\r
//[UTF-8]\r
+ //文字列s中に、文字列searchがいくつ含まれているかを返す。\r
uint count;\r
\r
if(s == NULL || search == NULL){\r