长双字符串

时间:2010-02-24 14:51:27

标签: c++ qt

我正在使用Qt框架在C ++中开发。

我需要将long double值转换为字符串(理想情况下为QString,但可能是其他内容)。

到目前为止,我总是使用QString :: number()进行数字 - >字符串转换,但long double类型没有重载。

由于

4 个答案:

答案 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());
    }