powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Число (в строке) разбить на разряды с помощью printf возможно?
37 сообщений из 37, показаны все 2 страниц
Число (в строке) разбить на разряды с помощью printf возможно?
    #39438172
Фотография Nika gnome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Использую
Код: plaintext
1.
printf_s(str, "%d", value);


Возможно каким-то образом дать указание printf разбивать числа на группы разрядов? Прочла MSDN, порылась в яндексе.
В java находила. А в C++ что-то не могу..
Пример:
value: 12635500
Результат: 12 635 500

Помогите, пожалуйста, если сможете.
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39438194
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nika gnomeВозможно каким-то образом дать указание printf разбивать числа на группы разрядов? Прочла MSDN, порылась в яндексе.
ручками резать )))
и учиться гуглояндексом пользоваться.

http://www.sql.ru/forum/859256/chislo-v-stroku-s-razdelitelem
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39438402
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nika gnome,

какого типа числа?
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39438404
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nika gnomeВозможно каким-то образом дать указание printf разбивать числа на группы разрядов? .

невозможно.
нужно делать самому.
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39438495
Фотография Nika gnome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivNika gnome,

какого типа числа?
целого и дробного, положительного и отрицательного.
Я уже запилила сама свою функцию) Я просто думала, что буду изобретать велосипед и в printf это всё уже есть
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39438617
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Молодец, так держать!
Не забудь запилить Unit-тесты на функцию!
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39438623
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nika gnome,

Локаль учитывается?
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39438737
Фотография Nika gnome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

да. Функция получает на вход строку, либо число.
Далее пропускает лидирющие пробелы
далее пропускает 1 знак + или -
далее читает цифры до тех пор, пока не наткнётся до "не цифры".
И формирует новую строку, где на месте того числа проставлены пробелы.
Поэтому функция отрабатывает успешно:
40 -> 40
-52100 -> -52 100
4523.22 руб. -> 4 523.22 руб.
4700344500600,1$$ ->4 700 344 500 600,1$$
ровно так, как мне надо.
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39439009
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nika gnomeИ формирует новую строку, где на месте того числа проставлены пробелы.
почему именно пробелы, а не точки или запятые?
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39439024
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилпочему именно пробелы, а не точки или запятые?пробелы наглядней, проверено на пользователях
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39439076
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychИзопропилпочему именно пробелы, а не точки или запятые?пробелы наглядней, проверено на пользователях
особенно удобно, если это от текущих системных настроек отличается
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39439087
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилособенно удобно, если это от текущих системных настроек отличаетсятекущие системные настройки интересуют только программистов, мирным людям требуется, чтобы им было удобно
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39439106
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychИзопропилособенно удобно, если это от текущих системных настроек отличаетсятекущие системные настройки интересуют только программистов, мирным людям требуется, чтобы им было удобно

мирные люди в состоянии выбрать и модифицировать локаль даже не будучи программистами.

чем то напоминает - "юникод не нужен"
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39439112
YesSql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nika gnomeДобрый день!
Использую
Код: plaintext
1.
printf_s(str, "%d", value);


Возможно каким-то образом дать указание printf разбивать числа на группы разрядов? Прочла MSDN, порылась в яндексе.
В java находила. А в C++ что-то не могу..
Пример:
value: 12635500
Результат: 12 635 500

Помогите, пожалуйста, если сможете.
В C++ можно использовать numpunct

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
#include <iostream>
#include <string>
#include <locale>
#include <iomanip>

struct my_number_format : std::numpunct<char>
{
   char do_thousands_sep() const    { return ' '; }         // space as a separator
   std::string do_grouping() const  { return "\3"; }        // digits grouping
};



int main()
{
  std::cout.imbue(std::locale(std::locale(), new my_number_format));

  std::cout << std::setprecision(2) << std::fixed << 12345.678 << std::endl; // 12 345.68
}
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39439435
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилмирные люди в состоянии выбрать и модифицировать локаль даже не будучи программистамив состоянии, ктож спорит, но почему то не делают))
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39439476
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychИзопропилмирные люди в состоянии выбрать и модифицировать локаль даже не будучи программистамив состоянии, ктож спорит, но почему то не делают))
1) делают
2) не забывайте об интернационализации приложений
3) не очень плохо, если все программы в текущей сессии одинаково форматируют числа
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39439619
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилне очень плохо, если все программы в текущей сессии одинаково форматируют числаесли они форматируют одинаково неудобно - то плохо.
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39439626
Фотография Nika gnome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё просто. Если вдруг понадобится, чтобы функция вместо пробелов вставляла любые другие символы - для этого можно добавить соответствующие аргументы. Скажем, separator==null - зависит от локали, separator ==',' - символ-разделитель запятая и т.д.
В моём случае нужен был именно пробел.
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39439671
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nika gnome,

Вот тут еще для общего развития как в С++ можно форматировать числа (как с системными разделителями так и произвольными)
http://stackoverflow.com/questions/7276826/c-format-number-with-commas
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39439887
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychИзопропилне очень плохо, если все программы в текущей сессии одинаково форматируют числаесли они форматируют одинаково неудобно - то плохо.
неудобно - настраивайте под себя.
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39439892
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anatoly MoskovskyNika gnome,

Вот тут еще для общего развития как в С++ можно форматировать числа (как с системными разделителями так и произвольными)
http://stackoverflow.com/questions/7276826/c-format-number-with-commas

А как кастомным numpunct в локале форматировать и дробную часть числа тоже? :)
http://ideone.com/wcfk2v
автор1,000,000.1234000
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39440157
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вася Уткин,

Нельзя.
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39440175
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилнеудобно - настраивайте под себя.я предпочитаю выполнять функциональные требования к своему приложению, а не к абстрактному. А мои пользователи предпочитают выполнять свою непосредственную работу, а не тратить время на бесконечную настройку винды под себя.
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39440408
д0kХ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Абстрактно меня складывается устойчивое ощущение,
что задачу форматирования внутри приложения может
придумать только руководитель подразделения саппорта,
что бы оправдать наличие штата в своем подразделении .
Что бы никто интуитивно не догадался почему так и открывал заявку.
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39440472
Common Lisp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychя предпочитаю хардкодить поведение в моём приложении, а не брать умолчания из системыПоправил.
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39440477
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychя предпочитаю выполнять функциональные требования к своему приложению, а не к абстрактному.
локаль - конкретика, а не абстакция.
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39440863
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропиллокаль - конкретика, а не абстакция.конкретика - это ФТ вида "необходимо разделять группы разрядов в числах с помощью пробелов". Можно это ФТ выполнить, а можно рассказывать каждому пользователю про локаль и интернационализацию, ага.
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39440882
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

если ты пишешь коробочное приложение, то нет выбора, как поступать, поддержка локали необходима и обязательна, а если частное решение, то эта поддержка становится бессмысленной тратой ресурсов. Для разного вида приложений - различный подход, это, в общем то, очевидная мысль же.
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39441124
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychИзопропил,

если ты пишешь коробочное приложение, то нет выбора, как поступать, поддержка локали необходима и обязательна, а если частное решение, то эта поддержка становится бессмысленной тратой ресурсов. Для разного вида приложений - различный подход, это, в общем то, очевидная мысль же.А что тебе мешает сделать собственный набор настроек? При первом старте программы заполняешь их из локали, а потом пользователь может править настройки как хочет.
Посмотри на тот-же Эксель - там вообще на каждую ячейку можно задать свой формат, но свежие ячейки (не тронутые шаловливыми ручками пользователя) имеют формат прочитанный как раз из локали.
По моему это вполне универсальный подход. Сам им пользуюсь если есть нужда в форматированном выводе чисел и дат.
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39441148
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl, мои пользователи должны не настройки в моих приложениях менять, а выполнять с помощью этих приложений свои текущие рабочие задачи. Когда они мне говорят, что им удобнее видеть числа, разбитые пробелами, то я беру это и делаю, а не начинаю их учить пользоваться локалью винды. Это не нужно ни мне, ни им, ни отделу эникейщиков.
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39441215
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychКогда они мне говорят, что им удобнее видеть числа, разбитые пробелами
кроме российских бухгалтеров есть пользователи в самых разных странах мира,
в том числе и иностранцы в России.

непонятно, откуда такое пренебрежение стандартами.
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39441226
Common Lisp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychКогда они мне говорят, что им удобнее видеть числа, разбитые пробелами, то я беру это и делаю, а не начинаю их учить пользоваться локалью винды. Это не нужно ни мне, ни им, ни отделу эникейщиков.А потом они копируют эти числа и вставляют в другое приложение, которое смотрит в локаль и ожидает число, разбитое запятыми, а пробелы не воспринимает, ха-ха.
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39441428
Фотография Nika gnome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилнепонятно, откуда такое пренебрежение стандартами.
Приведу свой пример - у меня приложение опубликовано на сервере. То есть, пользователи запускают его хоть и со своего рабочего стола, но по факту установлено и работает в совсем другой среде. В таком виде приложение проще всего обновлять. В настройках программы предусмотрена возможность самостоятельного выбора, через какой символ разделять группы разрядов.

Приведу второй пример. Есть полно "не идеальных" приложений, с которыми приходится взаимодействовать. Если некоторое стороннее приложение может импортировать данные, разделённые пробелом, а не каким-либо другим символом, то придётся класть на региональные стандарты и работать с тем, что есть.

Мне кажется, в этом топике слишком много идеалистов-теоретиков, которые не могут понять, что бывают ситуации, когда приходится все свои принципы засуну... отказаться от принципов.
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39441465
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nika gnomeЕсли некоторое стороннее приложение может импортировать данные, разделённые пробелом, а не каким-либо другим символом, то придётся класть на региональные стандарты и работать с тем, что есть.
не надо класть на стандарты, эти данные пришли из другой локали, ничего страшного.
а если идентификатор локали параметром в парсер передать - то и говнокода меньше будет

использование локали как варианта по умолчанию - не нарушает никаких принципов.
А в случае России - даст всем любимые пробелы.

Nika gnomeВ настройках программы предусмотрена возможность самостоятельного выбора, через какой символ разделять группы разрядов.
и замечательно
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39441482
YesSql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nika gnomeИзопропилнепонятно, откуда такое пренебрежение стандартами.
Приведу свой пример - у меня приложение опубликовано на сервере. То есть, пользователи запускают его хоть и со своего рабочего стола, но по факту установлено и работает в совсем другой среде. В таком виде приложение проще всего обновлять. В настройках программы предусмотрена возможность самостоятельного выбора, через какой символ разделять группы разрядов.

Приведу второй пример. Есть полно "не идеальных" приложений, с которыми приходится взаимодействовать. Если некоторое стороннее приложение может импортировать данные, разделённые пробелом, а не каким-либо другим символом, то придётся класть на региональные стандарты и работать с тем, что есть.

Мне кажется, в этом топике слишком много идеалистов-теоретиков, которые не могут понять, что бывают ситуации, когда приходится все свои принципы засуну... отказаться от принципов.
Децкий анекдот на эту тему.
Идет пионерское собрание в 5Б. Встает Маша, староста класса и говорит: "Наши мальчики очень плохо себя видут. Вчера на переменке загнали меня в угол и чем-то тупым между ног. А если бы острым? А если бы в глаз?".
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39441569
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Common LispА потом они копируют эти числа и вставляют в другое приложение, которое смотрит в локаль и ожидает число, разбитое запятыми, а пробелы не воспринимает, ха-ха.ну товарищ, ну ты даёшь. Ты не умеешь в буфер обмена засовывать числа как числа, а не как их строковое представление на экране? И эти люди запрещают мне ковыряться в носу)))
...
Рейтинг: 0 / 0
Число (в строке) разбить на разряды с помощью printf возможно?
    #39441577
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилкроме российских бухгалтеров есть пользователи в самых разных странах мира, в том числе и иностранцы в Россиикогда у меня появятся такие пользователи, я перепишу функцию вывода чисел на экран, будь уверен.
P.S. Не все мои сообщения одинаково заметны в форуме, штоль? Воть: 20414374
...
Рейтинг: 0 / 0
37 сообщений из 37, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Число (в строке) разбить на разряды с помощью printf возможно?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]