|
Замена в строке по словарю
|
|||
---|---|---|---|
#18+
Питонский вариант. Ну тоже не в 1 строку. Код: python 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2022, 00:50 |
|
Замена в строке по словарю
|
|||
---|---|---|---|
#18+
mayton Питонский вариант. Ну тоже не в 1 строку. Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2022, 07:06 |
|
Замена в строке по словарю
|
|||
---|---|---|---|
#18+
petrav Это ж мне нужно из __DATE__ выделить сокращение месяца. Написать отображение Jun -> Июнь и т.д. А лучше по английскому сокращению месяца определить его номер. Преобразовать в дату и распечатать месяц компиляции в текущей локали. https://stackoverflow.com/questions/11697820/how-to-use-date-and-time-predefined-macros-in-as-two-integers-then-stri ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2022, 14:12 |
|
Замена в строке по словарю
|
|||
---|---|---|---|
#18+
Вот интересно если сделать кросс-компиллятор С++ => Templates/Macros C++. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2022, 14:15 |
|
Замена в строке по словарю
|
|||
---|---|---|---|
#18+
White Owl mayton Питонский вариант. Ну тоже не в 1 строку. Код: sql 1. 2. 3. 4. 5. 6.
Но нам нужна динамическая генерация словаря. Как опция. Это же моветон такое писать. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2022, 17:43 |
|
Замена в строке по словарю
|
|||
---|---|---|---|
#18+
petrav, Так в перле все динамическое - в рантайме строки выполняются )) В С++ тоже ничего не мешает из словаря сделать регекс и провести замену. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2022, 21:55 |
|
Замена в строке по словарю
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky petrav, Так в перле все динамическое - в рантайме строки выполняются )) В С++ тоже ничего не мешает из словаря сделать регекс и провести замену. В классических регулярках можно проводить замену по словарю? Но я не это имел в виду. А замену которую семантически можно было бы описать так: Код: plaintext
Или из БД. Вот что я понимал под динамикой. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2022, 22:22 |
|
Замена в строке по словарю
|
|||
---|---|---|---|
#18+
Хм.. у тебя самый первый пост начинается так Допустим у нас есть ассоциативный массив std::map<std::string, std::string> тоесть он как-бы уже задан. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 00:13 |
|
Замена в строке по словарю
|
|||
---|---|---|---|
#18+
petrav Но нам нужна динамическая генерация словаря. Как опция. Это же моветон такое писать. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 01:27 |
|
Замена в строке по словарю
|
|||
---|---|---|---|
#18+
petrav Anatoly Moskovsky petrav, Так в перле все динамическое - в рантайме строки выполняются )) В С++ тоже ничего не мешает из словаря сделать регекс и провести замену. В классических регулярках можно проводить замену по словарю? petrav Но я не это имел в виду. А замену которую семантически можно было бы описать так: Код: plaintext
Или из БД. Вот что я понимал под динамикой. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 01:32 |
|
Замена в строке по словарю
|
|||
---|---|---|---|
#18+
Возможно тема топика про это и была. Локализовать _DATE_ + _TIME_ . Я-бы средствами сборщиков делал. Забил-бы ункиальный плейсхолдер в исходник. А потом за 1 миг до компилляции просто текстовой заменой вставлял бы даны в русском языке. Типа свой пре-процессор. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 12:31 |
|
Замена в строке по словарю
|
|||
---|---|---|---|
#18+
White Owl Вообще-то, такая задача решается проще. Берем строку, читаем ее как дату, потом пишем эту дату в нужной локали. Текстовой заменой никто не занимается. Локаль уже стоит другая, а в __DATE__ всё по "американски". :) Я не вижу как в std::get_time() локаль передать. Но попробовать можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 14:22 |
|
Замена в строке по словарю
|
|||
---|---|---|---|
#18+
petravЛокаль уже стоит другая, а в __DATE__ всё по "американски". :) Потому что так гласит стандарт: macros__DATE__ expands to the date of translation, a character string literal of the form "Mmm dd yyyy". The first character of "dd" is a space if the day of the month is less than 10. The name of the month is as if generated by std::asctime() asctimeThe function does not support localization, and the newline character cannot be removed. petravЯ не вижу как в std::get_time() локаль передать. asctimePOSIX marks this function obsolete and recommends locale-dependent std::strftime instead. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 14:32 |
|
Замена в строке по словарю
|
|||
---|---|---|---|
#18+
Вот интересно: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Если IS_RU_STR==0 оно парсит дату по-английски, а потом печатает её по-русски. Если IS_RU_STR==1 дату по-русски оно и не парсит. А почему так? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 15:55 |
|
Замена в строке по словарю
|
|||
---|---|---|---|
#18+
Неужели потому, что С++ класс использует С++ локаль, а не С? Да не, это было бы слишком просто... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 16:08 |
|
Замена в строке по словарю
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Неужели потому, что С++ класс использует С++ локаль, а не С? Да не, это было бы слишком просто... Все функции находятся в `std`, следовательно это всё C++. Да, кстати, MSVC + файл исходников в utf8+BOM. Но я удалил префикс u8 и ничего не изменилось. Русскую дату оно не парсит. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 16:17 |
|
Замена в строке по словарю
|
|||
---|---|---|---|
#18+
petravВсе функции находятся в `std`, следовательно это всё C++. Это неправильно следствие: https://en.cppreference.com/w/cpp/locale/setlocale The setlocale function installs the specified system locale or its portion as the new C locale. Проверь конкретно какая локаль имбуёвана у твоего стрингстрима. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 16:56 |
|
Замена в строке по словарю
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov petravВсе функции находятся в `std`, следовательно это всё C++. Это неправильно следствие: https://en.cppreference.com/w/cpp/locale/setlocale The setlocale function installs the specified system locale or its portion as the new C locale. Проверь конкретно какая локаль имбуёвана у твоего стрингстрима. Да, imbue() работает. Если локаль мы можем установить локально для этого потока, то это решает проблему корректно. Независимо от текущей глобальной локали. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 18:23 |
|
Замена в строке по словарю
|
|||
---|---|---|---|
#18+
Ну вот. Если ставится задача прочитать из строки дату в заданной локали, но при этом не затрагивая глобальную (установленную) локаль: Код: plaintext 1. 2. 3.
Ошибки парсинга проверить нельзя, плохо. Это точно самое разумное решение? У меня такое ощущение, что я что-то куда-то не туда примудил. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 19:05 |
|
Замена в строке по словарю
|
|||
---|---|---|---|
#18+
petravУ меня такое ощущение, что я что-то куда-то не туда примудил. Это фигня целиком, начиная с постановки задачи. Твой файл может быть вообще не перекомпилирован при сборке просто потому, что не изменялся. Соответственно и решение - в системе сборки, а не исходниках. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 19:17 |
|
Замена в строке по словарю
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov petravУ меня такое ощущение, что я что-то куда-то не туда примудил. Это фигня целиком, начиная с постановки задачи. Твой файл может быть вообще не перекомпилирован при сборке просто потому, что не изменялся. Соответственно и решение - в системе сборки, а не исходниках. И каково же по вашему решение? PS: В документации по созданию официальной сборки написано: пересобрать приложение, т.е. с нуля. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 22:46 |
|
Замена в строке по словарю
|
|||
---|---|---|---|
#18+
Можно и исходники не трогать. Просто при сборке положить в Windows-ресурсы строку с датой. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 23:43 |
|
Замена в строке по словарю
|
|||
---|---|---|---|
#18+
У него Линух. В винде было бы проще: там в заголовке экзешника есть специальное поле для таймштампа сборки. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2022, 01:18 |
|
Замена в строке по словарю
|
|||
---|---|---|---|
#18+
Можно так попробовать. Свой макрос. Код: python 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2022, 01:43 |
|
Замена в строке по словарю
|
|||
---|---|---|---|
#18+
А в makefile это еще проще делается. Добавляется вот такой код: Код: plaintext 1. 2. 3. 4. 5.
А timestamp.h ставится пререквезитом для какого-нибудь about.cpp и инклудится в нем. .PHONY объявляет цель как "делать всегда" и на каждый запуск make этот файл будет обновляться. А какой там формат date напечатает - зависит от его параметров, и он наследует локаль системы. Все просто и легко. А еще туда можно запихнуть всякие Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2022, 04:00 |
|
|
start [/forum/topic.php?fid=57&msg=40131956&tid=2017128]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 278ms |
total: | 420ms |
0 / 0 |