打印出来也看不懂

解决方案 »

  1.   

    试了一下,有汉字也没事
    LPSTR p="abcd呵呵";
    CString str(p);
    AfxMessageBox(str);
      

  2.   

    你是不是用cout了?兄弟也遇到过,显式转换一下就可以了,如:
    CString s = "abcd";
    cout << (LPCTSTR)s << endl;也不知道为什么,希望大牛解释解释。
      

  3.   

    LPSTR 就是 char *
    是一个字符串指针,仅仅是一个指针,它不包含其他信息,如字符串所占有的内存.这个指针可以随意改变其指向.CString是一个字符串对象,
    在使用CString时应该有的观点是它是包含了整个字串的所有信息,如内存位置,缓冲区大小等等.
    这时这个字符串是一个整体.把LPSTR转化为CString一般是先定义一个临时的CString对象,
    此时其实是重新分配了内存.
    就如akiko(弥弥) 的做法:
    CString str(p);把CString转化为LPSTR的一般做法是
    CString strTmp = "asdfd";
    strTmp.LockBuffer(); // 得的LPSTR只是临时使用
    strTmp.UnLockBuffer();可以使用LPCTSTR参数的地方可以直接使用CString
    因为CString重载了LPCSTR
    steedhorse(晨星) 的语句
    cout << (LPCTSTR)s << endl;
    其实可以直接使用:
    cout << s << endl;