我有一个类模板,用于存储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
。
答案 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>
。