练习题中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回答

quickzhao

2020-06-26

C种字符串以'\0'作为结尾,而strcpy到'\0'处就会结束,所以对于拷贝字符串的行为,需要先将其尾部置'\0',以保证C风格的一致。

0
5
慕桂英6345398
回复
quickzhao
好的,谢谢老师。
2020-06-26
共5条回复

重学C++ ,重构你的C++知识体系

一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维

3884 学习 · 1103 问题

查看课程