Russian Qt Forum

Qt => Вопросы новичков => Тема начата: phpCoder от Январь 12, 2015, 20:48



Название: Вывод числа со знаком (Qstring)
Отправлено: phpCoder от Январь 12, 2015, 20:48
Добрый день.
Можно ли в Qt в Qstring сделать форматированный вывод числа со знаком? Т.е. положительные числа должны быть со знаком "+". Аля sprintf. Пробовал в arg() подставлять "%+d руб", но он пишет, что не понимает.


Название: Re: Вывод числа со знаком (Qstring)
Отправлено: kambala от Январь 12, 2015, 21:21
есть QString::sprintf. а что мешает воспользоваться стандартным sprintf?


Название: Re: Вывод числа со знаком (Qstring)
Отправлено: carrygun от Январь 13, 2015, 05:30
Можно же применить и безумные вещи, например QString("%1%2 руб.").arg(num > 0 ? "+" : "").arg(num);  ;D


Название: Re: Вывод числа со знаком (Qstring)
Отправлено: phpCoder от Январь 13, 2015, 08:45
есть QString::sprintf. а что мешает воспользоваться стандартным sprintf?
Он убогий в плане синтаксиса (в сравнении с php) и deprecated.


Название: Re: Вывод числа со знаком (Qstring)
Отправлено: Igors от Январь 13, 2015, 10:50
Он убогий в плане синтаксиса (в сравнении с php) и deprecated.
Есть вещи которые "здесь делаются так". Хорошо или плохо, нравится или нет - это ничего не изменит. Поэтому чем раньше пришедший с пых-пых перестанет фыркать - тем лучше для него  :)


Название: Re: Вывод числа со знаком (Qstring)
Отправлено: phpCoder от Январь 13, 2015, 10:56
Вот поэтому ущербность языка надо исправлять, а не оставлять так как есть на долгие годы.  :)


Название: Re: Вывод числа со знаком (Qstring)
Отправлено: kambala от Январь 13, 2015, 14:43
есть QString::sprintf. а что мешает воспользоваться стандартным sprintf?
Он убогий в плане синтаксиса (в сравнении с php) и deprecated.
если ты о том, что он в студии deprecated, то используй sprintf_s


Название: Re: Вывод числа со знаком (Qstring)
Отправлено: PimenS от Январь 13, 2015, 14:48
Вот поэтому ущербность языка надо исправлять, а не оставлять так как есть на долгие годы.  :)

Чаще всего виновата не ущербность языка, а ущербность мышления.
Что тебе мешает написать свой класс, который будет делать все что тебе надо.


Название: Re: Вывод числа со знаком (Qstring)
Отправлено: phpCoder от Январь 13, 2015, 15:57
Вот поэтому ущербность языка надо исправлять, а не оставлять так как есть на долгие годы.  :)

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


Название: Re: Вывод числа со знаком (Qstring)
Отправлено: kambala от Январь 13, 2015, 16:07
что должно быть? ты же знаешь, что пхпшный (s)printf — это сишный (s)printf?


Название: Re: Вывод числа со знаком (Qstring)
Отправлено: PimenS от Январь 13, 2015, 18:20
Это должно быть по определению.

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


Название: Re: Вывод числа со знаком (Qstring)
Отправлено: phpCoder от Январь 13, 2015, 21:53
что должно быть? ты же знаешь, что пхпшный (s)printf — это сишный (s)printf?
Только первый возвращает строку (мы ж со строками работаем), а второй число (О_О).

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

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


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


Название: Re: Вывод числа со знаком (Qstring)
Отправлено: PimenS от Январь 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


Название: Re: Вывод числа со знаком (Qstring)
Отправлено: Igors от Январь 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);


Название: Re: Вывод числа со знаком (Qstring)
Отправлено: Old от Январь 14, 2015, 14:05
но боже мой, в какую длинную соплю выливается c << простая печать напр
Код
C++ (Qt)
printf("position[%d] = (%.4f, %.4f, %.4f)\n",  i, pos[i].x, pos[i].y, pos[i].z);
Конечно. :)
А boost.format возвращает все на "круги своя" с дополнительными ништяками.
Только я ничего не говорил... :)