把 1234567890 转成 2143658709 toswap(CString indata)
{
CString tmpin[200];
CString szout;
int len = 0;

len = indata.GetLength();
for (int i = 0; i<len; i++)
{
tmpin[i]=indata.Mid(i,1);
}
//indata.MakeReverse();
for (int j =0;j<len; j+=2)
{
szout = szout + tmpin[j+1] + tmpin[j];
}
return szout;
}有办法优化么

解决方案 »

  1.   

    toswap(CString indata)
    {
        int nLen = indata.GetLength();
        LPCTSTR lpStr = indata.GetBuffer(0);
        for (int i = 1; i < nLen; i+=2)
        {
            TCHAR c = lpStr[i];
    lpStr[i] = lpStr[i-1];
    lpStr[i-1] = c;
        }
        indata.ReleaseBuffer();
    }
      

  2.   

    Mid的效率不太好,改为char*
    CString toswap(CString inData)
    {
    int nLen = inData.GetLength();
            if(nLen < 2)//不足2个字符,不交换
               return "";
    char *pData = inData.GetBuffer(nLen);
    for(int i=0; i<nLen-1; i+=2)
    {
    char chTemp = *(pData+i);
    *(pData+i) = *(pData+i+1);
    *(pData+i+1) = chTemp;
    }
    inData.ReleaseBuffer();
            return inData;
    }