在List Control控件中,GetItemText(i,j)读到的数据是LPCSTR,怎么样把它转换成CString类型?或者用什么方法可以直接以CString格式把 List Control 中的数据的出来?

解决方案 »

  1.   

    直接用CString 的构造函数应该可以
    CString str( LPCSTR parament );
      

  2.   

    CString( LPCSTR lpsz )   Constructs a Unicode CString from an ANSI string. You can also use this constructor to load a string resource as shown in the example below.
    CString s7((LPCSTR)ID_FILE_NEW); // s7 = "Create a new document"
      

  3.   

    我试了,不行的,
    lpstr = GetItemText(i,3);
    CString str(lpstr);
    AfxMessageBox(str);
    出来是乱码
      

  4.   

    (CString)lpstr, Format 都试过,都是乱码
      

  5.   

    类似这样:
    strStaffID=(char*)(_bstr_t)(pRS->GetFields()->GetItem("工号")->GetValue());
      

  6.   

    首先问一下为什么要变换成CString类型?建议先看看取得的数据是否正确。
      

  7.   

    LPCTSTR本身就可以和CString强制转换,我试了一下,下面的代码可以正确的输出,LPCTSTR lp=_T("test");
    CString str=lp;
    MessageBox(str);所以不是转换的问题,楼主应该检查之前的代码,或者在设断点看一下LPCSTR中是否是正确内容
      

  8.   

    LPCTSTR, LPCSTR还是有区别的,前者我知道跟CString 强制转换就行了,但后者我怎么都转不过来
      

  9.   

    补充一下:我取得List Control中的数据后进行处理时,要求必须是CString 类型的
    而GetItemText(i,j)读到的数据是LPCSTR类型
      

  10.   

    LPCSTR和LPCTSTR是一个类型,这个是MFC源码里的相关定义typedef char CHAR;
    typedef CONST CHAR *LPCSTR, *PCSTR;
    typedef LPCSTR LPCTSTR;由此可以看出,LPCTSTR和LPCSTR都是指向char的指针。所以可能问题还是出现在之前的代码中,建议楼主检查一下程序。