[cpp] 月薪超过8K的人写的代码

Ken ken.shao at gmail.com
Thu Oct 26 12:48:43 CST 2006


// * 去除原字符串中的类似字符串:"(1324kb" "(134.34kb" "(132KB" "约13423分" "约347秒"
//   即去除 "kb","分","秒" 前是 "(" 数字 "{" "约" 全角数字
// @ wchar_t* _wstr 为原字符串
void clear_num_wkb(wchar_t* _wstr)
{
    if (!_wstr)
    {
        return;
    }
    wchar_t wszkb[8];
    memset(wszkb, 0, sizeof(wszkb));
    wchar_t* wcfind = find_wkb(_wstr, wszkb);
    wchar_t* wcfind1 = NULL;
    int nflag = 0;
    wchar_t wctag[64];
    wchar_t wctur[64];
    int nit = 0;
    do {
        if (!wcfind)
        {
            break;
        }
        wcfind1 = wcfind + 1;
        nflag = wcslen(wcfind);
        memset(wctag, 0, sizeof(wctag));
        nit = 0;
        nflag = wcslen(_wstr) - nflag - 1;
        wcsncpy(wctag+nit, _wstr+nflag, 1);
        BOOL bTest = FALSE;

        // 0-48 .-46 [-91 /-47 (-40 {-123 玼-32004 分-20998 0-65296 ?-63 '
'-20
        while ((wctag[nit] >= 46 && wctag[nit] <= 59) ||
                wctag[nit] == 20 ||
                wctag[nit] == 40 ||
                wctag[nit] == 63 ||
                wctag[nit] == 91 ||
                wctag[nit] == 123 ||
                wctag[nit] == 32004 ||
                wctag[nit] == 20998 ||
                wctag[nit] >= 65296 && wctag[nit] <= 65305)
        {
            nit++;
            nflag--;
            wcsncpy(wctag+nit, _wstr+nflag, 1);
            bTest = TRUE;
        }
        memset(wctur, 0, sizeof(wctur));
        // turn right
        nit--;
        for (int i=nit; i>=0; i--)
        {
            wctur[nit-i] = wctag[i];
        }
        wcscpy(wctur+nit+1, wszkb);
        // del the szflag in the string
        if (bTest)
        {
            del_single_wtag(_wstr, wctur);
        }
        wcfind = find_wkb(wcfind1, wctag);
    } while(wcfind);
}

第一次发帖,不知道大家对这个话题感兴趣否?

ps: 注意加重部分代码,这是一家做搜索的公司,:-D

Ken
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://codingnow.com/pipermail/cpp/attachments/20061026/2bf2eff8/attachment.html


More information about the Cpp mailing list