gpt4 book ai didi

C++ 将字符串转换为 typedef 或 istream 重载

转载 作者:行者123 更新时间:2023-11-30 04:27:47 35 4
gpt4 key购买 nike

我有一个类模板,除其他事项外,它应该重载 istream,以便它接受用户的输入并将其添加(插入)到一个包含类型 T 元素的 vector 中。

    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() 函数?

最佳答案

如果不是字符串,您可以使用 stringstream 对象(从 tmp 创建)提取正确的值。请注意,如果您需要的不仅仅是内置类型(例如 int)

或者,您可以为遇到的每个 T 定义一个 convert() 函数的重载,以提供从字符串 tmp 到所需的类型。将根据您的模板参数选择适当的重载(如果存在)。

关于C++ 将字符串转换为 typedef 或 istream 重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10640358/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com