如何使用模板函数从字符串中删除子字符串?

时间:2016-11-12 15:23:21

标签: c++ templates

我能够做到这一点:

template <typename T>

T add (T x, T y) {
    T z = x + y;
    return z;
}

int main() {
    string string1 = "stack";
    string string2 = "overflow";
    cout << add<string> (string1, string2);
}

我得到&#34; stackoverflow&#34;。

我如何类似地使用模板函数从字符串中删除子字符串(也可以与整数,浮点数等一起使用)?例如,删除&#34;溢出&#34;来自&#34; stackoverflow&#34;。

1 个答案:

答案 0 :(得分:1)

  

我如何类似地使用模板函数从字符串中删除子字符串(也可以与整数,浮点数等一起使用)?例如,从“stackoverflow”中删除“溢出”。

你可以使用像这样的简单函数来做到这一点:

gradeCombo.setModel(new DefaultComboBoxModel<Object>( TimeZone.getAvailableIds()));

会重载模板版本,该版本将适用于std::string remove(const std::string& toRemove, const std::string& original) { std::string result(original); size_type pos = original.find(toRemove); if(pos != std::string::npos) { result = original.substr(0,pos); } return result; } float等:

int

查看Live Demo

要使其适用于c风格的文字,您可能需要提供另一个重载:

template<typename T> T remove(const T& toRemove, const T& original) {
    return original - toRemove;
}