CTest
{
public:
******private:
char *m_szText;
};void CTest::SetText(char *szText)
{
// 第一种给m_szText赋值的方法
int len = strlen( szText );
m_szText = NULL;
m_szText = new char[ len ];
strcpy( m_szText, szText ); // 第二种给m_szText赋值的方法
m_szText = szText;
}请问上面两种给m_szText赋值的方法应该用那种好些?或者是还有其他更好的方法,谢谢!
{
public:
******private:
char *m_szText;
};void CTest::SetText(char *szText)
{
// 第一种给m_szText赋值的方法
int len = strlen( szText );
m_szText = NULL;
m_szText = new char[ len ];
strcpy( m_szText, szText ); // 第二种给m_szText赋值的方法
m_szText = szText;
}请问上面两种给m_szText赋值的方法应该用那种好些?或者是还有其他更好的方法,谢谢!
第一种方法中既然m_szText = new char[ len ];
那么就不能直接 m_szText = NULL;
而是首先要delete[]m_szText;
if (m_szText != NULL)
{
delete[] m_szText;
m_szText = NULL;
}
m_szText = new char[ len + 1 ]; // 为'\0'保留空间
strcpy( m_szText, szText );