我正在使用这个代码。
也许这很容易,但现在我不能。请帮我解决这个问题。我在这个函数中寻找总是空。
我该如何解决这个问题?我做不到。
多谢。
代码:
int my_len(const char* p) {
int c = 0;
while (*p != ' ')
{
c++;
*p++;
}
return c;
}
String::String()
:m_str(NULL)
{
}
String::String(char * other_str)
{
}
{
int mystrlen = my_len(m_str);
int myrhslen = my_len(other_str.m_str);
if (mystrlen != myrhslen)
{
return false;
}
else
{
for (int i = 0; i < mystrlen; i++)
{
if (m_str[i] != other_str.m_str[i])
{
return false;
}
}
return true;
}
}
}
您的非默认构造函数有一个空的实现:
String::String(char * other_str)
{
}
所以这里m_str
没有初始化。如果这是您的意图,您可以复制字符串:
String::String(char * other_str)
{
m_str = strdup(other_str);
}
但是,您将不得不自己管理strdup分配的内存,例如在析构函数中:
String::~String()
{
if (m_str != NULL)
free(m_str);
}