длинный двойной в строку - PullRequest
2 голосов
/ 24 февраля 2010

Я разрабатываю в C ++, используя фреймворк Qt.

Мне нужно преобразовать значение long double в строку (в идеале QString, но может быть и другое).

До сих пор я всегда использовал QString :: number () для преобразования чисел-> строк, но перегрузка для типа long double отсутствует.

Спасибо

Ответы [ 4 ]

5 голосов
/ 24 февраля 2010

Simple:

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();
}
2 голосов
/ 24 февраля 2010

QString имеет статическую функцию для создания QString из std :: string, поэтому ответ Wheaties может быть переписан как:

#include <sstream>
#include <QString>
...
QString qStringFromLongDouble(const long double myLongDouble)
{
  std::stringstream ss;
  ss << myLongDouble;

  return QString::fromStdString(ss.str());
}
0 голосов
/ 17 марта 2018

Ответ, помеченный как неполный, сохранит его только с 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());
    }
0 голосов
/ 24 февраля 2010

Boost имеет lexical_cast для этой цели. Он в значительной степени оборачивает решение, заданное Wheaties, в шаблон класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...