1、チャーターンUTF-8
int型char2Utf8(のconst char型*のSRC、文字** RET) { int型nret。 int型のlen = 0; WCHAR * PWCHAR = 0; int型のコードページ= AreFileApisANSI()?CP_ACP:CP_OEMCP。 LEN = MultiByteToWideCharの(コードページ、0、SRC、-1、NULL、0); PWCHAR =(WCHAR *)はmalloc(LENはsizeof(WCHAR)*)。 nret = MultiByteToWideCharの(コードページ、0、SRC、-1、PWCHAR、LEN)。 (nret <0)であれば 、戻りnret。 LEN = WideCharToMultiByte(CP_UTF8、0、PWCHAR、-1、0、0、0、0); * RET =(チャー*)のmalloc(LEN + 1)。 nret = WideCharToMultiByte(CP_UTF8、0、PWCHAR、-1、* RET、LEN、0、0); 無料(PWCHAR)。 nret返します。 }
2、UTF-8トランスフェクトチャー
int型Utf2char(のchar *のSRC、文字** RET) { int型nret。 WCHAR * PWCHAR = 0; int型のコードページ= AreFileApisANSI()?CP_ACP:CP_OEMCP。 nret = MultiByteToWideCharの(CP_UTF8、0、SRC、-1、NULL、0); PWCHAR =(WCHAR *)はmalloc(はsizeof(WCHAR)* nret)。 nret = MultiByteToWideCharの(CP_UTF8、0、SRC、-1、PWCHAR、nret)。 nret = WideCharToMultiByte(コードページ、0、PWCHAR、-1、0、0、0、0); * RET =(CHAR *)はmalloc(nret + 1)。 nret = WideCharToMultiByte(コードページ、0、PWCHAR、-1、* RET、nret、0、0); 無料(PWCHAR)。 nret返します。 }
3、URL転送UTF-8
ストリングurlUtf8(チャー*列str) { 文字列DD。 文字列のアスキー= STR。 チャーUTF8 [BUFFER_LEN * 5]。 memsetの(UTF8、0x00で、BUFFER_LEN * 5)。 ASCIIToUTF8_string(ASCII、UTF8)。 文字列TT = UTF8。 size_tのLEN = tt.length()。 用は(size_t i = 0; iがLEN <; iは++) { IF(isalnum((BYTE)tt.at(I))) { チャーtempbuff [2] = {0}。 sprintf(tempbuff、 "%のC"、(BYTE)tt.at(I))。 dd.append(tempbuff)。 } そうであれば(isspace((BYTE)tt.at(I))) { dd.append( "+")。 } 他 { チャーtempbuff [4]。 sprintfの(tempbuff、 "%%% X%X"、((BYTE)tt.at(I))>> 4、((BYTE)tt.at(I))%16)。 dd.append(tempbuff)。 } } 戻りDD; } ボイドASCIIToUTF8_stringは、(文字列&cACSII、cUTF8チャー*) { //最初のASCIIコードは、Unicodeエンコーディングに変換され INT nlen = MultiByteToWideCharの(CP_ACP、0 、cACSII.c_str()、-1、NULL、NULL); * = PUNICODE新しい新規のwchar_tのwchar_t [cACSII.size()* 3]; のmemset(PUNICODE、0、* nLenはsizeof(wchar_t型)); MultiByteToWideCharの(CP_ACP、0、cACSII.c_str()-1、(LPWSTR)PUNICODE、 nLen); wstringのwsUnicode = PUNICODE; // Unicodeは、UTF-8エンコーディングとしてエンコード変換 nlen = WideCharToMultiByte(CP_UTF8、0、 wsUnicode.c_str()、-1、NULL、0、NULL、NULL); WideCharToMultiByte(CP_UTF8、0、wsUnicode.c_str()、-1、cUTF8、nlen、NULL、NULL); }
図4は、指定されたビットの乱数を生成します
std ::文字列GetRandString(size_tのサイズ) { tCurTimeのtime_t = 0。 int型iRandValue = 0; 私はint型。 unsigned int型状態= 0; tCurTime =時間(NULL)。 srand関数((unsigned int型)tCurTime)。 チャーBUF [255]。 (私は++; iはサイズが<I = 0)のための { BUF [I] = '0' +(RAND()%10)。 } BUF [I] = '\ 0'。 BUFを返します。 }
5、現在の時刻のタイムスタンプを取得します
ストリングGetTimeStamp() { のtime_t CURTIME =時間(NULL)。 TM * PTM = localtimeの(&CURTIME)。 チャーBUF [64]。 sprintf(BUF、 "%D%02D%02D%02D%02D%02D"、ptm->のtm_year + 1900 ptm-> tm_mon + 1、 ptm-> tm_mday、ptm-> tm_hour、ptm-> tm_min、ptm- >のtm_sec); BUFを返します。 }