我有一个类模板,除其他外,它应该重载 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() 函数?