读取字符串 的字符时出错.分配内存



我正在使用这个代码。

也许这很容易,但现在我不能。请帮我解决这个问题。我在这个函数中寻找总是空。

我该如何解决这个问题?我做不到。

多谢。

代码:

    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);
}

相关内容

  • 没有找到相关文章

最新更新