尝试过的代码:
1.//这段代码会出现警告:
//warning C4244: '=' : conversion from 'unsigned short' to 'char', possible loss of data
        
         CString strBuffer="abc";
         char charBuffer[200]; 
for(i=0;i<strBuffer.GetLength();i++)
{
*(charBuffer+i)=strBuffer.GetAt(i);
strcat(charBuffer,strBuffer.GetAt(i));
}
*(charBuffer+i)='\0';
2://这段代码出现错误,不能把CString类型转换为const char *
    charBuffer = (LPSTR)(LPCTSTR)strBuffer;

解决方案 »

  1.   

    本来直接等就可以了
    但因为你用的是_UNICODE模式
    所以最好别用strcat和char
    使用lstrcat和TCHAR
      

  2.   

    strBuffer.GetBuffer (0); 行不?
      

  3.   

    charBuffer[i] = strBuffer.GetAt(i);
      

  4.   

    charBuffer是个数组名,不是指针,不能赋值
      

  5.   

    charBuffer不能做左值
    可以用strcpy
    或者 void *memcpy( void *dest, const void *src, size_t count );
    注意 mecpy(charBuffer,Strihg,2000和CSTRING长度小者);
    zhuyi
    主义oun
      

  6.   

    我用的时候写个小程序
    char* CStringToChar(CString & str)
    {
    char temp[MAX_LENGTH];
    for(int i=0;i<str.GetLength();i++)
    temp[i]=str[i];
    temp[i]='\0';
    return temp;
    }
    然后用strcpy();
      

  7.   

    (char*)(LPCTSTR)加到前面就可以了
      

  8.   

    strBuffer.GetBuffer (0); 应该可以吧
      

  9.   

    strBuffer.GetBuffer()
    或者
    (char*)(LPCTSTR)strBuffer
    都可以