gpt4 book ai didi

c++ - 是否有类似于 stoi 的函数可用于模板类?

转载 作者:行者123 更新时间:2023-11-28 01:15:43 29 4
gpt4 key购买 nike

我上周为一项作业创建了一个复数类,我们的下一个作业是将此类修改为模板类。部分赋值重载了提取运算符,最初只处理 int 时,我将整个输入行作为一个字符串,并为实部和虚部制作子字符串,然后我使用 stoi 将这些部分转换为我可以商店(这是我的教授建议做的)。但是,现在这是一个模板类,如果使用的类型是 double 、浮点等,stoi 将不再起作用。是否有一个功能类似但适用于不同类型的函数?或者可能是另一种可能效果更好的解决方案?

我尝试使用 if 语句来检测正在使用的类型,然后相应地使用 stoi、stod 等。然而,这似乎不太理想,因为它只适用于我明确定义的类型,而且我确信这不是这不是他们要找的东西。

template <class T>
istream& operator>>(istream& in,MyComplex<T> &num){
string inString;
getline(in, inString);
T test = 3.33;
if(test != 3.33){
//convert using stoi
}
else if(test == 3.33){
//convert using stod
}
//etc.
}

我省略了括号内的内容,因为它很长并且不会改变我只能为有限数量的数据类型定义的事实。提前感谢您的帮助!

最佳答案

我建议直接使用输入流。您的输入格式似乎是 2.3 + 5i ,因此您可以使用以下代码:

double a,b;
char c;
in >> a >> c >> b; // c eats the +; let's the i in the in
in >> c; // eats the i

请注意,我们也可以使用 c在同一行中两次,我只是想给我的评论留出空间,所以我把它放在下一行。

对您的代码的更一般性说明:检查类型的“正确”方法T是(或者可能只是类型具有的属性,因为您可能不需要区分说 intlong ),是使用 type traits .

但是,为了对不同的类型有完全不同的实现,你应该使用不同的实现,所以声明一个采用 MyComplex<double> 的方法。 , 一个需要 MyComplex<int>

关于c++ - 是否有类似于 stoi 的函数可用于模板类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58791169/

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