Отформатируйте отрицательное целое / двойное число, используя sprintf

возможно ли использовать только sprintf (c ++) для форматирования отрицательного целого / двойного числа таким образом, чтобы между знаком и значением был пробел?

from this: -1234

to this: - 1234

Изменить: он будет идти в массив символов.

0

Решение

Я понимаю, что это не вопрос, но так как это помечено как C ++:

std::ostringstream out;
out << std::internal << std::setw(6) << -1234;
std::string result = out.str();
0

Другие решения

С sprintf? Не напрямую, нет.

Вы должны будете реализовать эту логику самостоятельно (используя abs/fabs и второй sprintf аргумент), или используйте соответствующий место действия для страны, которая использует этот макет рендеринга, и надеемся, что ваша реализация его соблюдает.

Вероятно, было бы намного проще с собственными потоками ввода / вывода в C ++, поэтому подумайте о переключении на них.

0

Попробуй это:

char large_evil_array[128];
double my_var = -12.34;
int my_int = -6589;
int chars_formatted =
snprintf(large_evil_array, sizeof(large_evil_array),
"%c %5.2f %c %d\n",
(char)((my_var < 0) ? '-' : ' '),
(double)((my_var < 0) ? (my_var * -1.0) : my_var),
(char)((my_int < 0) ? '-' : ' '),
(int)((my_int < 0) ? (-1 * my_int) : my_int));

Если вы используете потоки C ++, вы можете написать свой собственный модификатор форматирования.

0
По вопросам рекламы [email protected]