Cpp int to qstring
Преобразование числа в строку
QString & QString::setNum(int n, int base = 10)
Sets the string to the printed value of n in the specified base, and returns a reference to the string.
The base is 10 by default and must be between 2 and 36. For bases other than 10, n is treated as an unsigned integer.
The formatting always uses QLocale::C, i.e., English/UnitedStates. To get a localized string representation of a number, use QLocale::toString() with the appropriate locale.
Преобразование строки в целое число
int QString::toInt(bool * ok = 0, int base = 10) const
Returns the string converted to an int using base base, which is 10 by default and must be between 2 and 36, or 0. Returns 0 if the conversion fails.
If a conversion error occurs, *ok is set to false; otherwise *ok is set to true.
If base is 0, the C language convention is used: If the string begins with «0x», base 16 is used; if the string begins with «0», base 8 is used; otherwise, base 10 is used.
The string conversion will always happen in the ‘C’ locale. For locale dependent conversion use QLocale::toInt()
int hex = str.toInt(&ok, 16); // hex == 255, ok == true
int dec = str.toInt(&ok, 10); // dec == 0, ok == false
Преобразование строки в вещественное число
float QString::toFloat(bool * ok = 0) const
Returns the string converted to a float value.
If a conversion error occurs, *ok is set to false; otherwise *ok is set to true. Returns 0.0 if the conversion fails.
The string conversion will always happen in the ‘C’ locale. For locale dependent conversion use QLocale::toFloat()
str1.toFloat(); // returns 1234.56
str2.toFloat(&ok); // returns 0.0, sets ok to false
Преобразование строки в вещественное число двойной точности
double QString::toDouble(bool * ok = 0) const
Returns the string converted to a double value. Returns 0.0 if the conversion fails.
If a conversion error occurs, *ok is set to false; otherwise *ok is set to true.
double val = str.toDouble(); // val == 1234.56
Various string formats for floating point numbers can be converted to double values:
d = QString( «1234.56e-02» ).toDouble(&ok); // ok == true, d == 12.3456
The string conversion will always happen in the ‘C’ locale. For locale dependent conversion use QLocale::toDouble()
d = QString( «1234,56» ).toDouble(&ok); // ok == false
d = QString( «1234.56» ).toDouble(&ok); // ok == true, d == 1234.56
For historic reasons, this function does not handle thousands group separators. If you need to convert such numbers, use QLocale::toDouble().
d = QString( «1,234,567.89» ).toDouble(&ok); // ok == false
d = QString( «1234567.89» ).toDouble(&ok); // ok == true
Вот как можно создать строку с числом с ведущими нулями:
Наименование right justified говорит о том, что само число будет сдвинуто ближе к правому краю, а дополнительные символы будут добавлены слева.
- Заготовка виджета, *.cpp файл
- Заготовка виджета, *.h файл
- Qt как побороть вывод предупреждения о неиспользуемой переменной
- Как получить индекс QModelIndex по номеру строки, столбца
- Как выбрать элемент в виде так, как если бы по нему кликнули мышкой
- Информация об отправителе сигнала
- Слои и this, ошибки
- Как настроить QSlider
- C++ и Qt — Глобальные клавиши (hotkeys) в X11, Windows, MacOS
- Вставка картинок в QTextEdit
- QTextEdit — как очистить произвольный параграф
- QTextEdit — как указать обтекание при вставке картинки
- QTextEdit — как выяснить имена всех картинок, находящихся в тексте
- Как из QVector сделать двумерный (многомерный) массив
- Куда устанавливается Qt в различных дистрибутивах Linux
- Qt4: Программирование моделей и представлений. Подробное объяснение на русском языке.
- Программирование моделей в Qt — рекомендации по использованию, неочевидные моменты
- Как в Qt сделать преобразование из QString в число int и обратно
- Qt: преобразование строки в число и числа в строку
- Беседы о Qt: Парадигма Model-View
- Модели-Посредники в Qt
- Qt: Как узнать все методы объекта во время выполнения программы
- Как изменить стиль оформления в Qt? (Рецепты для Qt5)
- Как вывести на экран окно с сообщением (пример)
- Как запомнить геометрию главного окна
- Как добавить свой тип в QVariant, и как добавить указатель на свой тип в QVariant
- Qt: Сигналы и слоты (выдержка из документации Qt 4.x)
- Qt: как преобразовать строку QString в unsigned char*
- Qt: как преобразовать строку QString в std::string
- Как перебрать все элементы QMap или QHash через foreach, получив ключ и значение
- Как перебирать элементы QList через foreach
- Как в Qt перебрать символы в строке через foreach
- Архитектура Модель-Вид-Контроллер в Qt (Небольшой, но полный пример кода)
- Поиск объектов в Qt по имени и типу
- Как в Qt получить текущее время в формате UNIX TIMESTAMP
- Qt: абсолютные экранные координаты виджета и их преобразование
- Qt: как показать диалог или виджет в окне, чтобы он автоматически удалился при закрытии окна
- Как в Qt создать кнопку QPushButton, чтобы она была шириной с текст
- Контейнеры в Qt
- Алгоритмы для работы с контейнерами в Qt и итераторы
- Понимание работы функций qLowerBound() и qUpperBound() в Qt
- Как правильно удалять элементы из QVector или из QList в момент обхода массива (списка)
- Как добавить опции профилирования в Qt
- Как сделать так, чтобы кнопки на форме нажимались по клавише Enter а не только по пробелу
- Зачем нужен макрос Q_PROPERTY и как им пользоваться
- Что в документации Qt означает «Inherited By:» и «Inherits:»
- Как работать с QTemporaryFile
- Как в Qt быстро получить текущее время в виде строки?
- Как задать ширину кнопки QPushButton так, чтобы она вмещала только текст
- Скорость выполнения операций для контейнеров QList, QLinkedList, QVector, QQueue, QStack
- Как в QListView, QTableView или QTreeView отобразить галки (CheckBox) ?
- Как в Qt в отладочном выводе вывести название текущего класса и метода
- Пример загрузки дерева и пробегания подчиненных элементов QDomElement
- Умные указатели в Qt: статья на русском языке от IBM Developer
- Размышления об умных указателях в Qt от Андрея Боровского. Отличия QPointer и QScopedPointer
- Почему в Qt не работает мигание окном при вызове QApplication::alert()
- Как поместить указатель на объект в QMap, и затем работать с этим объектом, извлекая указатель из QMap
- Правила создания виджетов в Qt: на стеке или динамически?
- Как сделать «плавающий» виджет минимального размера
- Что делать, если сообщения в консоли Qt появляются с задержкой
- Пример подсистемы логирования в Qt с использованием qInstallMessageHandler()
- Как в Qt быстро увеличить расстояние между строками для QListView, QTableView, QTreeView
- Как правильно получить из QString строку const char *
Как преобразовать int в QString?
Существует ли функция QString в качестве аргумента принимающая тип int и возвращающая его как QString ?
Ответы (2 шт):
Способ 1
int i = 42; QString s = QString::number(i);
Способ 2
Вы можете использовать метод arg :
QString QString::arg ( int a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const
Способ 3
И если вы хотите использовать решение при объединении строк, забудьте об операторе + . Просто сделайте так:
// Qt 5 + C++11 auto i = 13; auto printable = QStringLiteral("My magic number is %1. That's all!").arg(i); // Qt 5 int i = 13; QString printable = QStringLiteral("My magic number is %1. That's all!").arg(i); // Qt 4 int i = 13; QString printable = QString::fromLatin1("My magic number is %1. That's all!").arg(i);
Способ 4
QPoint point(5,1); QString str; QTextStream(&str)
Предупреждение: у вас может возникнуть желание использовать sprintf() для воспроизведения операторов printf() в C–стиле, но я рекомендую использовать QTextStream или arg() , так как они поддерживают строки в формате Unicode .
Способ 5
Взгляните на QString::setNum() .
int i = 10; double d = 10.75; QString str; str.setNum(i); str.setNum(d);
setNum() переопределяется множеством способов. См. Справочное описание класса QString .
Способ 6
Более того, для конвертации из различных форматов и в различные форматы вы можете воспользоваться QVariant . Для конвертации int в QString получим:
Для конвертации типа float в String или String в float :
QVariant(3.2).toString(); QVariant("5.2").toFloat();
casting a variable to a string type (приведение переменной к типу строки)
QString str = QString("%1").arg(x)
Or formatted string (Или к форматированная строка)
QString str = QString("x1= %1 x2= %2").arg(x1).arg(x2)
Как преобразовать int в QString?
Вот более интересный вопрос: есть ли более быстрый путь? Я столкнулся с проблемой, когда эта версия почти занимает больше времени, чем вся обработка потом .
Тогда вы, вероятно, захотите поработать с заранее выделенными буферами . но это звучит как отдельный вопрос.
И если вы хотите поместить его в строку в каком-то текстовом контексте, забудьте о + . Просто выполните:
// Qt 5 + C++11 auto i = 13; auto printable = QStringLiteral("My magic number is %1. That all!").arg(i); // Qt 5 int i = 13; QString printable = QStringLiteral("My magic number is %1. That all!").arg(i); // Qt 4 int i = 13; QString printable = QString::fromLatin1("My magic number is %1. That all!").arg(i);
Поскольку вы упоминаете оператор + , будьте осторожны с целыми числами, так как он может очень хорошо работать, но внутренне, вызывается реализация operator+(const QString &s, char c) , и строка не будет содержать целое число как число, но его QChar::fromAscii(c) эквивалент
Поскольку вы упоминаете оператор +, вы можете это сделать, но понимаете, что происходит: QString p = s + QString :: number (1); Быть са QString работает отлично. Итак, в основном QString + QString - это нормально, QString + int - плохо .
Кроме того, чтобы преобразовать все, что вы хотите, вы можете использовать QVariant . Для int a QString вы получаете:
A float до a string или string до float:
QVariant(3.2).toString(); QVariant("5.2").toFloat();
Назовите меня сумасшедшим, но я бы больше использовал вопрос «Как преобразовать число в QString?», Это основной ответ для облегченных преобразований и другие ответы для специальных процедур.
QPoint point(5,1); QString str; QTextStream(&str)
Предостережение: Возможно, у вас возникнет соблазн использовать средство sprintf() для имитации операторов C style printf() , но рекомендуется использовать QTextStream или arg() , поскольку они поддерживают Unicode string s.