【发布时间】:2012-05-17 17:16:53
【问题描述】:
我有一个类模板,除其他外,它应该重载 istream,以便它接受用户的输入并将其添加(推送)到一个包含 T 类型元素的向量中。
friend istream &operator>> (istream &in, Set<T> &s)
{
int ctr = 0;
string tmp;
T val;
while (true) {
cout << "\tElement #" << ctr + 1 << ": ";
getline (in, tmp);
if (tmp == "\0") break;
// MISSING CODE HERE: "Convert" tmp into val
s.add(val);
ctr = s.size();
}
return in;
}
这适用于Set<string>,但我需要找到一种方法使其也适用于任何原始数据类型,例如Set<integer>。
我试过了
stringstream(tmp) >> val
但这不适用于Set<string>。
我猜输入需要以字符串的形式读入;那么,如何将输入字符串转换为 T 类型以将其传递给 .add() 函数?
【问题讨论】:
-
请显示您的所有代码,而不仅仅是这个子集。有点不清楚到底发生了什么。
标签: c++ class templates typedef operator-keyword