当前位置:  开发笔记 > 编程语言 > 正文

字符串问题

如何解决《字符串问题》经验,为你挑选了1个好方法。

我正在使用cstring函数,该函数应该比较两个字符串MyString和m2的值.我有#include所以它绝对不是那样的.这些是我的错误.

(74) : error C2275: 'MyString' : illegal use of this type as an expression
(74) : error C2660: 'MyString::length' : function does not take 1 arguments
(76) : error C2275: 'MyString' : illegal use of this type as an expression

这是我从中获取它们的代码.

bool MyString::operator ==(const MyString &m2) const
{
    int temp = 0;

    if (length(MyString) = length(m2)) // 74
    {
        if (strcmp(MyString, m2))  // 76
        {
            temp = 1;
        }
        else
        {
            temp = 2;
        }
    }
    if(temp = 2)
    {
        return "true";
    }
    else
    {
        return "false";
    }
}

任何有关这方面的帮助将不胜感激,谢谢.



1> Brian R. Bon..:

问题:

返回true或false,不是"true"或"false"

您正在使用=而不是==进行比较(您在代码中使用=进行两次比较)

要在C++类中引用自己,您需要使用关键字this而不是类名.

第74行应该是:

if (length() == m2.length()) // 74

strcmp采用char*而不是MyString.

第76行应该是:

if (strcmp(this->c_str(), m2.c_str()))  // 76

在第76行中,这假设类型MyString有一个函数c_str(),它返回一个指向零终止的char []缓冲区的指针.


功能结构:

功能的结构非常糟糕.考虑更像这样的事情:

bool MyString::operator ==(const MyString &m2) const
{
    if(this->length() != m2.length())
      return false;

    return !strcmp(this->c_str(), m2.c_str()));
}

注意:在上面的函数中,this->可以省略.

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有