如何使用模板将QString转换为typename?

Fro*_*zan 5 c++ qt templates

我想写一个通用的模板方法来计算一些东西,最后返回一个值typename T.该值来自QString,因此我需要将QString转换为指定的值typename T.不幸的是我只找到了toDouble(),toInt()......的方法.

我需要的是:

QString s = 3.1415;
double d = s.toType<double>();
float f = s.toType<float>();
int i = s.toType<int>();
Run Code Online (Sandbox Code Playgroud)

我不想叫toDouble(),toInt()......因为我不能在编译时选择它们.

谢谢!


编辑:我可以编写我自己的专用模板函数来完成这个.所以

double myOwnConvertFunction<double>(const QString& s)
Run Code Online (Sandbox Code Playgroud)

然后只需调用s.toDouble()

我认为Qt可能已经有了内置方式吗?

Joh*_*itb 7

您可以将QString转换为QVariant anf然后使用value()

QVariant(s).value<T>()
Run Code Online (Sandbox Code Playgroud)

QVariant与QString共享数据,因此这里不会发生深层复制,结果也应该非常快.为了更加舒适,Qt有

qvariant_cast<T>(s)
Run Code Online (Sandbox Code Playgroud)