用于操作字符的函数(经过测试没问题的)
//=======================================
//
//Conversion string field (fix bug)
CString CNew::OnFixfieldstringbug(CString strIn)
{
  CString str_return;
 for(int i=0; i<=strIn.GetLength();i++)
 {
 if(strIn[i]=='\'')
 str_return +="\"";
 else 
         str_return +=strIn[i];
 }
 //MessageBox(str_return);
 return str_return;
}
//========================================
但是我在多次调用并把多次调用的结果都累计到一个cstring变量的时候,却出现了问题,这个变量不可以是完整的
比如
 CString str_temp;

CString str_Insert="Insert into News Values (";
//
str_Insert +="'";
GetDlgItemText(IDC_EDIT_TIME,str_temp);
str_Insert +="',";
    //
str_Insert +="'";
GetDlgItemText(IDC_CHINA_TITLE,str_temp);
    str_Insert +=OnFixfieldstringbug(str_temp);
str_Insert +="',";
//
str_Insert +="'";
GetDlgItemText(IDC_CHINA_CONTONT,str_temp);
    str_Insert +=OnFixfieldstringbug(str_temp);
str_Insert +="',";
//
str_Insert +="'";
GetDlgItemText(IDC_IMAGE_LINK,str_temp);
    str_Insert +=OnFixfieldstringbug(str_temp);
str_Insert +="',";
//
str_Insert +="'";
GetDlgItemText(IDC_ENGLISH_TITLE,str_temp);
    str_Insert +=OnFixfieldstringbug(str_temp);
str_Insert +="',";
//
//
str_Insert +="'";
GetDlgItemText(IDC_EDIT_ENGLISH_CONTONT,str_temp);
    str_Insert +=OnFixfieldstringbug(str_temp);
str_Insert +="'"; 
我的每个DEIT控件里都有字符串,OnFixfieldstringbug(str_temp);处理回来的结果也是正确的,但就不知道为什么str_Insert的结果却只有一半就没下文了

解决方案 »

  1.   

    for(int i=0; i<=strIn.GetLength();i++)
    ===>         ^^^^^?? 
    for(int i=0; i< strIn.GetLength();i++)by the way, for your purpose, you can simply do YourString.Replace("\'", "\"");
      

  2.   

    saucer(思归) 奇怪了,怎么这样就解决问题了?
      

  3.   

    CString CNew::OnFixfieldstringbug(CString strIn)
    {
      CString str_return;
     for(int i=0; i<=strIn.GetLength();i++)  <=== 问题在这 i<strIn.GetLength()
     {
     if(strIn[i]=='\'')
     str_return +="\"";
     else 
             str_return +=strIn[i];
     }
     //MessageBox(str_return);
     return str_return;
    }
      

  4.   

    五颗星就是不一样。CString::Replace
    int Replace( TCHAR chOld, TCHAR chNew );int Replace( LPCTSTR lpszOld, LPCTSTR lpszNew );