Неэпический
![]() |
|||||||||||||||||||||
1 | |||||||||||||||||||||
Обертка над boost::lexical_cast для работы с unsigned типами31.01.2016, 15:29. Показов 3908. Ответов 23
Пару дней назад выяснилось, что boost::lexical_cast
не удовлетворяет нескольким требованиям в моей программе. boost::lexical_cast отказывается обрабатывать и выбрасывает исключение, если имеются пробелы в начале или в конце входной строки. Также для unsigned типов, отрицательные значения обрабатываются нормально, т.е., например, boost::lexical_cast<unsigned int>("-1") даст вполне валидное значение.Для моих целей эти два факта были неприемлемы. Собственно, Ticket #5494 как раз об этом, и там был представлен такой велосипед:
а ведь "-0", как и "+0" - вполне валидные значения. Поэтому был написан велосипед:
Использование:
P.S. Спасибо пользователям Kastaneda и hoggy за правки и дополнения. Добавлено через 31 минуту Вариант под C++11:
4
|
31.01.2016, 15:29 | |
Ответы с готовыми решениями:
23
Обертка над boost::asio Namespace boost не содержит члена lexical_cast
|
31.01.2016, 16:32 | 2 |
Не по теме: *утащил в свою коллекцию семплов*
0
|
![]() ![]() 8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
31.01.2016, 16:38 | 4 |
0
|
![]() ![]() 8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
31.01.2016, 20:42 | 6 | |||||
http://rextester.com/RUFT62725
1
|
![]() ![]() 8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
31.01.2016, 21:12 | 8 |
0
|
Неэпический
![]() |
||||||
01.02.2016, 03:33 [ТС] | 9 | |||||
Ну вот универсальный код для Glib::ustring не прокатит
![]() О, как! Немного переделал Ваш и добавил свой. detail не менял.
Блин, ошибся немного. Забыл вырубить шаблон ustring upd: поменял код ![]()
1
|
Неэпический
![]() |
|||||||||||||||||||||
01.02.2016, 03:33 [ТС] | 10 | ||||||||||||||||||||
С учетом дополнений из темы Применение is_same для списка типов
Немного доработал код. Добавил два макроса:
TYPE_LIST_CV - добавляет к типу квалификаторыIGNORING_TYPES - список типов, которые должны игнорироваться основным шаблономНемного переработал основной шаблон string_cast , для учета указанных игнорируемых типов:
string_cast для какого-либо типа,необходимо добавить тип в список игнорируемых (если требуется игнорировать типы со всеми квалификаторами, то можно использовать TYPE_LIST_CV ), и такжедобавить string_cast с этой "особой" реализацией, добавив в is_one_same соответствующий тип.Например, вот реализация:
причем, типов, включающих одну такую "специализацию" может быть несколько, например,
TYPE_LIST_CV(Glib::ustring) и TYPE_LIST_CV(char*)
0
|
![]() ![]() |
|
01.02.2016, 18:57 | 11 |
Не по теме: Да, а С++ до сих пор нет нормальных функций для преобразования ходовых типов с учетом всех возможных вариантов, к примеру локали. Добавлено через 7 минут Что касается сути, то не проще ли использовать сначала регулярку потом каст, если регулярка прошла ?
0
|
![]() ![]() 8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
01.02.2016, 19:01 | 12 |
я так и не понял, что вы пытаетесь построить?
Добавлено через 2 минуты Не по теме: хз, что значит:
0
|
01.02.2016, 20:51 | 14 |
Не по теме: с датой проще. можно указывать регулярки для кастов туда/сюда. с циферками наверное что-то подобное должно быть. просто это с локалью напрямую никак не связанно. локали отвечают за национальные символы. и это - глобальный головняк. а не только плюсовый. что до плюсов, то местные локали/фасеты/прочий калл - эпический фейл. вылечить который можно лишь полным пересмотром всей той части архитектуры стандартной библиотеки, которая отвечает за работу со строками. полагаться на плюсовую локаль нельзя категорически.
0
|
![]() ![]() |
||||||
01.02.2016, 21:16 | 15 | |||||
Я делаю обычно это в С++Builder так
Т.е. сравнительно просто. http://docwiki.embarcadero.com... atSettings
0
|
![]() |
||||||
02.02.2016, 07:19 | 16 | |||||
boost:: ptime умеет форматировать даты по строкам типа
"%mm-%dd-%yyyy" . У меня тип для даты используется совершенно левый, поэтому есть свой велосипед перегоняющий boost:: ptime в мой тип. Есть такой мап, который по языку системы возвращает шаблон даты
0
|
![]() ![]() 8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
02.02.2016, 08:48 | 17 |
0
|
![]() ![]() |
|
02.02.2016, 11:05 | 19 |
А как язык и формат данных даты связаны?
Никак... фэйл... Точно так же как формат даты и десятичный разделитель. Просто иногда нужно отображать в том формате в каком система, а обрабатывать в другом например если данные берутся с сайта.
0
|
![]() |
|
02.02.2016, 11:11 | 20 |
??? От языка пользователя зависит формат даты, времени, плавающая точка и т.д.
Добавлено через 3 минуты У меня веб-приложение, юзеру нужно показать дату в его формате, бразуер в HTTP запросе посылает язык пользователя, по языку определяется в каком виде ему показывать дату. Если всем показывать в одном формате, то русский и американец поймет эту запись 3/2/2016 совершенно по-разному.
0
|
02.02.2016, 11:11 | |
Помогаю со студенческими работами здесь
20
Обёртка над WinAPI
Обертка над массивом double[] Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
![]() |
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Java Record или Kotlin Data Class: что лучше для неизменяемых данных
Wired 04.03.2025
Java Record и Kotlin Data Class - средства для работы с неизменяемыми структурами данных, каждое из которых предлагает свой уникальный подход к решению этой задачи. История их появления весьма. . .
|
Создание производительных API с Java и gRPC
Wired 04.03.2025
В разработке производительность и масштабируемость микросервисных приложений играют ключевую роль. Традиционные REST API, несмотря на свою популярность и простоту, не всегда способны обеспечить. . .
|
Что нового в JDK 24
Wired 04.03.2025
JDK 24 знаменует собой значительный скачок в развитии Java, внося фундаментальные улучшения в производительность, безопасность и удобство разработки. Релиз включает множество революционых изменений,. . .
|
Разработка блокчейн с использованием Java: смарт-контракты и dApp
Wired 04.03.2025
Современная блокчейн-разработка на Java предоставляет разработчикам широкий спектр возможностей. В отличие от Solidity, который ограничен экосистемой Ethereum, Java позволяет создавать как. . .
|
WebAssembly в Kubernetes
stackOverflow 03.03.2025
В современной экосистеме облачных технологий WebAssembly (Wasm) становится все более значимым компонентом, предлагая уникальный подход к выполнению кода в распределенных системах. Эта технология. . .
|
GitHub Actions или Jenkins: Выбираем CI/CD платформу
stackOverflow 03.03.2025
Непрерывная интеграция и развертывание (CI/ CD) изменили подход к разработке программного обеспечения, превратив его в бесшовный процесс от написания кода до развертывания в продакшн. GitHub Actions и. . .
|
Автоматизация тестирования Pull Request в Kubernetes: Интеграция с GitHub Actions и GKE
stackOverflow 03.03.2025
Масштабные проекты с использованием Kubernetes требуют надежной системы тестирования изменений перед их внедрением в продакшн-среду. Традиционный подход с ручной проверкой Pull Request не справляется. . .
|
Tестирование Pull Request в Kubernetes с помощью vCluster
stackOverflow 03.03.2025
При работе с микросервисной архитектурой критически важно обеспечить качественное тестирование каждого изменения перед его слиянием в основную кодовую базу. Однако тестирование Pull Request в. . .
|
Использование пакета Context в Golang
bytestream 03.03.2025
Управление параллельными процессами в современных приложениях - сложная задача, особенно когда речь идет о микросервисной архитектуре и распределенных системах. Пакет context в Go - это гибкое. . .
|
WebAssembly и Go: Работа с DOM и обработка ошибок
bytestream 03.03.2025
WebAssembly представляет собой технологию, позволяющую запускать низкоуровневый код в браузере практически на нативной скорости. Особенно интересные возможности открываются при использовании. . .
|