练习题中string的实现
来源:10-17 CPP多线程基础
慕桂英6345398
2020-06-26
为什么分配内存成功后要 *m_data = '\0';
再拷贝,而不是直接拷贝?
m_data = new char[length + 1];
if (m_data != NULL)
{
*m_data = '\0';
}
strcpy(m_data, other.m_data);
// 为什么不直接写
if (m_data != NULL)
{
strcpy(m_data, other.m_data);
}
写回答
1回答
-
C种字符串以'\0'作为结尾,而strcpy到'\0'处就会结束,所以对于拷贝字符串的行为,需要先将其尾部置'\0',以保证C风格的一致。
052020-06-26