看到书上一个例子
m_strline是一个结构体指针,m_name是结构体指针所指向的char类型数据,
定义一个CString  m_strname类型数据
为什么赋值是用strcpy(m_strline->m_name,m_strname.GetBuffer(0));
难道不可以直接strcpy(m_strline->m_name,m_strname)吗?

解决方案 »

  1.   

    多字节情况下2种应该都可以,UNICODE下2种应该都不可以,这种情况下,相比用GetBuffer,我更倾向于GetString
      

  2.   

    char *strcpy(
       char *strDestination,
       const char *strSource 
    );
    可以,第二个参数是LPSTR.,CString类重载了LPCTSTR类型操作符不过要注意编码的问题
      

  3.   

    因为strcpy第二个参数只能为char*的数据。你直接用m_strname当然不行,因为它是CString.
    但可以用m_strname.GetBuffer(0),因为它返回的是CString里存储的数据的地址
      

  4.   

    这种调用貌似是约定俗成的,在字符串操作函数中,如果其中的任何一个参数是CString类型,最好都要GetBuffer()一下
      

  5.   

    如果没有特殊要求, 就要不用GetBuffer了, 需要释放什么的,比较容易忘记的.因为CString有自动类型转换, 只要是参数能接收 const TCHAR *  的地方都可以直接把CString对象传进去.