我在VS2005下写MFC程序, 
我先通过一段程序得到一个BSTR bstr的内容, 通过程序运行过程中查看变量值是正确的.之后
用TRACE("outptu = %s", CString(bstr)); 只能输出字串的第一个字符?
改为TRACE("output = %s", CString(L"test out"))这样也不行, 到底是什么原因啊, 谢谢!

解决方案 »

  1.   

    TRACE("outptu = %s", (char*)  bstr); 
    这样试试
      

  2.   

    CString str = bstr;
    TRACE("outptu = %s", str ); 
      

  3.   

    实际上, 我调试时看的变量值都是正确的, 而且CString(bstr) == L"text_st"这样的比较也是正确的. 只是TRACE输出时出错, 不知道为什么?
      

  4.   

    试试使用OutputDebugString输出。
      

  5.   

    因为你使用的是UNICODE字符串,一个字符由两个char组成,当是英文的时候,其中一个char是'\0',所以你只能输出第一个字符。方法1:把工程改为UNICODE。方法2:使用ws,代码修改成:TRACE("outptu = %ws", CString(bstr)); 
    TRACE("output = %ws", CString(L"test out"));方法3:强制使用OutputDebugStringWOutputDebugStringW(CString(bstr));请任选一个,GoodLuck..