我正在使用Qt框架在C ++中开发。
我需要将long double
值转换为字符串(理想情况下为QString
,但可能是其他内容)。
到目前为止,我总是使用QString :: number()进行数字 - >字符串转换,但long double
类型没有重载。
由于
答案 0 :(得分:5)
简单:
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();
}
答案 1 :(得分:2)
QString有一个静态函数来从std :: string构造一个QString,所以wheaties的答案可以重写为:
#include <sstream>
#include <QString>
...
QString qStringFromLongDouble(const long double myLongDouble)
{
std::stringstream ss;
ss << myLongDouble;
return QString::fromStdString(ss.str());
}
答案 2 :(得分:0)
为此目的,Boost有lexical_cast
。它几乎将解决了小麦的解决方案包含在课堂模板中。
答案 3 :(得分:0)
标记的答案不完整,只保存6位小数。 它应该是这样的:
#include <sstream>
#include <iomanip>
#include <limits>
QString longDoubleToString(long double value)
{
std::stringstream stream;
stream << std::fixed << std::setprecision(std::numeric_limits<long double>::digits10 + 1) << value;
return QString::fromStdString(stream.str());
}