我在深化发展C++,使用Qt框架。长双串
我需要将long double
的值转换为字符串(理想情况下为QString
,但可能是其他内容)。
到目前为止,我一直用的QString ::号码()用于numerical->字符串转换,但没有超载的long double
类型。
感谢
我在深化发展C++,使用Qt框架。长双串
我需要将long double
的值转换为字符串(理想情况下为QString
,但可能是其他内容)。
到目前为止,我一直用的QString ::号码()用于numerical->字符串转换,但没有超载的long double
类型。
感谢
的QString有一个静态函数构造从一个std为QString ::字符串,因此麦片的回答可以改写为:假定`使用命名空间std
#include <sstream>
#include <QString>
...
QString qStringFromLongDouble(const long double myLongDouble)
{
std::stringstream ss;
ss << myLongDouble;
return QString::fromStdString(ss.str());
}
简单:
string convert(long double myLongDouble) {
stringstream blah;
blah << myLongDouble;
return blah.str();
}
随着模板:
template<class T> string convert(T _input) {
stringstream blah;
blah << _input;
return blah.str();
}
;',是吧? – 2010-02-24 15:08:48
@Mike:最好假设'使用std :: string;使用std :: stringstream;' – Bill 2010-02-24 15:13:44
其实,我使用'std :: string'和'std :: stringstream'。我不是'使用'的忠实粉丝;像'#include',它把重要的信息拿出来看的大部分源(即'#include'和'using'语句通常是在源文件的开头的,所以你必须从无论你是回头看获益背景)。我只是提出这个问题,因为有很多程序员把'using namespace std;'放在* all *的代码中,并假设其他人都这样做。 – 2010-02-26 05:13:03
升压具有lexical_cast
用于这一目的。它几乎包装了小麦子给课堂模板的解决方案。
也有可能是'返回的QString(ss.str()c_str());' – 2010-02-24 15:40:37
@Adam:'的QString :: fromStdString()'可以使用'的std :: string'的大小(),以避免计数字符串的长度。如果你将'const char *'传递给'QString()',那么它必须重新计算已知的内容。 – Bill 2010-02-24 18:44:03
没错,很高兴知道。我通常使用'QString(“%1”)来避免所有这些。arg(n)'但它不处理长整数:) – 2010-02-24 19:15:43