Russian Qt Forum
Ноябрь 23, 2024, 13:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Вывод числа со знаком (Qstring)  (Прочитано 9515 раз)
phpCoder
Гость
« : Январь 12, 2015, 20:48 »

Добрый день.
Можно ли в Qt в Qstring сделать форматированный вывод числа со знаком? Т.е. положительные числа должны быть со знаком "+". Аля sprintf. Пробовал в arg() подставлять "%+d руб", но он пишет, что не понимает.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Январь 12, 2015, 21:21 »

есть QString::sprintf. а что мешает воспользоваться стандартным sprintf?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
carrygun
Гость
« Ответ #2 : Январь 13, 2015, 05:30 »

Можно же применить и безумные вещи, например QString("%1%2 руб.").arg(num > 0 ? "+" : "").arg(num);  Смеющийся
Записан
phpCoder
Гость
« Ответ #3 : Январь 13, 2015, 08:45 »

есть QString::sprintf. а что мешает воспользоваться стандартным sprintf?
Он убогий в плане синтаксиса (в сравнении с php) и deprecated.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Январь 13, 2015, 10:50 »

Он убогий в плане синтаксиса (в сравнении с php) и deprecated.
Есть вещи которые "здесь делаются так". Хорошо или плохо, нравится или нет - это ничего не изменит. Поэтому чем раньше пришедший с пых-пых перестанет фыркать - тем лучше для него  Улыбающийся
Записан
phpCoder
Гость
« Ответ #5 : Январь 13, 2015, 10:56 »

Вот поэтому ущербность языка надо исправлять, а не оставлять так как есть на долгие годы.  Улыбающийся
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #6 : Январь 13, 2015, 14:43 »

есть QString::sprintf. а что мешает воспользоваться стандартным sprintf?
Он убогий в плане синтаксиса (в сравнении с php) и deprecated.
если ты о том, что он в студии deprecated, то используй sprintf_s
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
PimenS
Крякер
****
Offline Offline

Сообщений: 371


Просмотр профиля
« Ответ #7 : Январь 13, 2015, 14:48 »

Вот поэтому ущербность языка надо исправлять, а не оставлять так как есть на долгие годы.  Улыбающийся

Чаще всего виновата не ущербность языка, а ущербность мышления.
Что тебе мешает написать свой класс, который будет делать все что тебе надо.
Записан
phpCoder
Гость
« Ответ #8 : Январь 13, 2015, 15:57 »

Вот поэтому ущербность языка надо исправлять, а не оставлять так как есть на долгие годы.  Улыбающийся

Чаще всего виновата не ущербность языка, а ущербность мышления.
Что тебе мешает написать свой класс, который будет делать все что тебе надо.
No comment.
Это должно быть по определению.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #9 : Январь 13, 2015, 16:07 »

что должно быть? ты же знаешь, что пхпшный (s)printf — это сишный (s)printf?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
PimenS
Крякер
****
Offline Offline

Сообщений: 371


Просмотр профиля
« Ответ #10 : Январь 13, 2015, 18:20 »

Это должно быть по определению.

Что должно быть? Вывод положительного числа со знаком "+" в виде QString? Наверное этого не нужно было разработчикам Qt.
Мне так тоже за 20 лет работы с учетными программами ни разу не понадобилось.
Сделай простейшую функцию
Код:
QString qrealToString(qreal i) {return QString::number(i).prepend(i > 0 ? "+" : "");}
и пользуй ее где захочешь.
Записан
phpCoder
Гость
« Ответ #11 : Январь 13, 2015, 21:53 »

что должно быть? ты же знаешь, что пхпшный (s)printf — это сишный (s)printf?
Только первый возвращает строку (мы ж со строками работаем), а второй число (О_О).

Функцию писать не хочу. Зачем еще один велосипед.

Сделал так: tr().springf("%+d");
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #12 : Январь 13, 2015, 21:59 »

Только первый возвращает строку (мы ж со строками работаем), а второй число (О_О).
ну как бы первым параметром ты и передаешь строку, в которую будет записан результат... стандартная практика в сишных функциях.
Сделал так: tr().springf("%+d");
выглядит адово, зато сэкономил пару строчек!
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
PimenS
Крякер
****
Offline Offline

Сообщений: 371


Просмотр профиля
« Ответ #13 : Январь 13, 2015, 22:52 »

Сделал так: tr().springf("%+d");

Если имеется ввиду QString::​sprintf, то лучше ее не использовать

Цитировать
Warning: We do not recommend using QString::sprintf() in new Qt code.
Instead, consider using QTextStream or arg(), both of which support Unicode strings seamlessly and are type-safe
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #14 : Январь 14, 2015, 09:02 »

ну как бы первым параметром ты и передаешь строку, в которую будет записан результат... стандартная практика в сишных функциях.
Вопрос к phpCoder: а почему первым?

Если имеется ввиду QString::​sprintf, то лучше ее не использовать
И потом долго и нудно изучать форматки потока  Улыбающийся Нет, теоретически это конечно правильно, но боже мой, в какую длинную соплю выливается c << простая печать напр
Код
C++ (Qt)
printf("position[%d] = (%.4f, %.4f, %.4f)\n",  i, pos[i].x, pos[i].y, pos[i].z);
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.068 секунд. Запросов: 23.