如何解析类模板?

时间:2014-03-31 21:18:28

标签: c++ parsing templates

我有一个类模板,用于存储typename T的值:

template<typename T>
class Container
{
public:
    void storeT(const T& input); //Sets data = input
private:
    T data;
}

我想编写一个查看数据并删除目标事件的函数。因此,如果我将这句话存入T:“西班牙的雨水整齐地落在平原上”,那么我打电话给这个功能删除“西班牙”的发生,那么数据现在就是“整齐下降的雨平原。“我之前通过解析字符串和字符串流来完成此操作,但是我之前没有用类模板完成它。

我的问题来自于不知道如何解析这类数据。我需要找到一些方法来阅读typename T的变量,以便找到一个单词/字母/短语并将其删除。

我的第一个想法是类似于我将如何解析字符串:创建我正在搜索的目标的数据成员,在这个问题中它可能是T target并将其设置为等于我正在寻找的价值。然后将目标与我正在解析的事物的各个部分进行比较,如果相等,则执行某些操作,在此问题中将其删除。

这是我提出的问题:你能解析一下类模板的数据成员吗?如果是这样,它是否类似于通过字符串解析或者您是否需要其他类型的支持?

编辑:在我使用它的所有情况下,T将成为std::string

2 个答案:

答案 0 :(得分:0)

不,这一般不起作用。您用于T的所有类型必须提供一些可用于“解析”的通用接口。但是,除std::string以外的其他类型不提供等于std::string::find()的方法。

您打算使用哪种类型T

答案 1 :(得分:0)

std::search(begin(data), end(data), ...可以处理类似容器的任何内容。但究竟如何从std::array<char,40>中删除某些内容?它无法变成std::array<char,35>