在c ++中重载“ - ”(减号)运算符以使用字符串?

时间:2017-03-14 15:49:01

标签: c++ string operator-overloading

我正在研究如何在c ++中使用运算符重载来处理类但无法在线获得清晰的想法所以我发布了这个问题。我想基本上重载减号“ - ”运算符以删除子来自更大字符串的字符串。例如,第一个字符串是“Hello World”,第二个字符串是“He”,输出应该是“llo World”。

1 个答案:

答案 0 :(得分:0)

尝试以下方法:

#include <iostream>
#include <string>
using namespace std;

//prototype
string operator-(string, const string &);

int main()
{
    cout << "Hello World" - "He" << endl;
}

string operator-(string firstOp, const string &secondOp)
{
    //test if the firstOp contains the secondOp
    if (firstOp.find(secondOp) != string::npos)
    {
        //erase the secondOp of the firstOp
        firstOp.erase(firstOp.find(secondOp), secondOp.length());
    }
    return firstOp;
}

//Output: "llo World"

在这里,您为类字符串的运算符声明了一个全局运算符函数。 当编译器找到' - '时,他查找符合给定签名的运算符函数或方法(此处为:const string&amp;,const string&amp;)。 希望我能帮到你:)。