Cstring strNumber0 ;
std::string number0 ;
m_number0.GetWindowText(strNumber0);
TRACE ("IIIIIIIIIIIII%s\n", strNumber0) ;
number0 = strNumber0.GetBuffer(strNumber0.GetLength()) ;
TRACE ("IIIIIIIIIIIII%s\n", number0) ;
我是想将CString转换成std::string类型,为什么前面的显示正确,后面显示的不正确呢?

解决方案 »

  1.   

    number0 = strNumber0.GetBuffer(0) ;
      

  2.   

    strNumber0.GetBuffer(0);肯定能得到正确的字符串,只不过是不是string型不清楚,我都用wchar_t*得到的strNumber0.GetBuffer(0)
      

  3.   

    这个TRACE有问题,参数是std::string的话。
    你用 AfxMessageBox(number0.c_str()) ;来测试,应该正确的
      

  4.   

    这是由于TRACE宏的原因 // TODO: 在此添加额外的初始化代码
    CString strNumber0("4321432") ;
    std::string number0 ;
    TRACE ("IIIIIIIIIIIII%s\n", strNumber0);
    number0 = "88432";
    strNumber0 = number0.c_str();
    // number0 = strNumber0.GetBuffer(strNumber0.GetLength()) ;
    TRACE ("IIIIIIIIIIIII%s\n", strNumber0) ;输出就是
    IIIIIIIIIIIII4321432
    IIIIIIIIIIIII88432
      

  5.   

    这个TRACE确实有问题,楼上的这种方法测试发现时正确的。