Форум программистов, компьютерный форум CyberForum.ru

Обертка над boost::lexical_cast для работы с unsigned типами - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Hex to Ascii http://www.cyberforum.ru/cpp/thread1650678.html
Всем привет! Работаю с АЦП, и ему надо отправить ascii код (55H 55H 00H 00H AAH). (в виде char будет (UU ª), просто так отправить не удалось) Попробовал отправить hex (55 55 00 00 AA), не принимает. Кто-нибудь может мне помочь вывести строчку "UU ª" хотя бы на командную строку?
C++ QtCipherSqlitePlugin sqlite3_rekey не шифрует Пытаюсь сменить пароль на БД. QSqlDriver *driver=myDatabase.driver(); QVariant handle=driver->handle(); Q_ASSERT_X(handle.isValid(), Q_FUNC_INFO, "Invalid handle of QSqlDriver"); if(handle.isValid() && qstrcmp(handle.typeName(), "sqlite3*")!=0) return false; sqlite3* db=*static_cast<sqlite3* const*>(handle.data()); if(db==NULL) http://www.cyberforum.ru/cpp/thread1649506.html
C++ Инструмент для быстрого создания установщиков программ
Есть ли какой-нибудь инструмент для быстрого создания установщиков программ, как например InnoSetup, но для C++? Или хотя бы приближенный к этому.
Как скомпилировать Lammps под windows? C++
Добрый день! Очень нужна помощь в установке и запуске программы молекулярной динамики LAMMPS под Windows. Программу установил, создал bat. файл запуска,но программа все равно не работает. Я новичок в программировании, есть ли простой способ установки и запуска данной программы.
C++ Как правильно создать ModBus ASCII запрос? http://www.cyberforum.ru/cpp/thread1647759.html
Адрес - 26 Код функции 03h начало - 0000 Количество -0004 расчет LRC char calculateLRC( char b, int n){ char lrc = 0x00; for (int i = 1; i < n; i++) {
C++ Почему происходит ошибка undefined reference to hgeCreate Всем привет. Я новичок по C++ и недавно решил освоить разработку игр. Скачал с интернета 2D движок для графики HGE, однако никак не могу скомпилировать даже пример, ибо компилятор ругается. Код примера: #include "include/hge.h" HGE *hge = 0; bool FrameFunc() { if (hge->Input_GetKeyState(HGEK_ESCAPE)) return true; return false; подробнее

Показать сообщение отдельно
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12498 / 7060 / 792
Регистрация: 27.09.2012
Сообщений: 17,441
Записей в блоге: 2
Завершенные тесты: 1
01.02.2016, 03:33  [ТС]     Обертка над boost::lexical_cast для работы с unsigned типами
Цитата Сообщение от hoggy Посмотреть сообщение
и функциональность не страдает)
Ну вот универсальный код для Glib::ustring не прокатит

О, как!
Немного переделал Ваш и добавил свой.
detail не менял.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
namespace detail
{
    struct string_cast_impl
    {
        template<typename TargetType, typename Str> static
        typename std::enable_if<std::is_unsigned<TargetType>::value, TargetType>::type
        cast(const Str& source)
        {
            if (!source.empty() && source[0] == '-'){
                TargetType result = boost::lexical_cast<TargetType>(source) ;
                return (result!=0) ? throw boost::bad_lexical_cast(),TargetType(0) : result  ;
            }
            return boost::lexical_cast<TargetType>(source);
        }
 
 
        template<typename TargetType, typename Str> static
        typename std::enable_if<!std::is_unsigned<TargetType>::value, TargetType>::type
        cast(const Str& source)
        {
            return boost::lexical_cast<TargetType>(source) ;
        }
    };
}//end of detail
 
 
template<typename TargetType, typename StringType>
std::enable_if_t<
    !std::is_same<
        std::decay_t<StringType>,
        Glib::ustring
    >::value,
    std::decay_t<TargetType>
>
string_cast(StringType&& source)
{
    using CharT =
        typename std::remove_const<
            typename std::remove_reference<decltype(source[0])>::type
        >::type;
 
    using DecayType = typename std::decay<TargetType>::type ;
 
    //std::string str(std::forward<StringType>(source)) ;
 
    std::basic_string<CharT> str(std::forward<StringType>(source)) ;
 
    boost::trim(str) ;
    return detail::string_cast_impl::cast<DecayType>(str) ;
 
}
 
 
template<typename TargetType, typename StringType>
std::enable_if_t<
    std::is_same<
        std::decay_t<StringType>,
        Glib::ustring
    >::value,
    std::decay_t<TargetType>
>
string_cast(StringType&& source)
{
    using DecayType = typename std::decay<TargetType>::type ;
    std::string str(std::forward<StringType>(source)) ;
    boost::trim(str) ;
    return detail::string_cast_impl::cast<DecayType>(str) ;
}
Добавлено через 7 минут
Блин, ошибся немного. Забыл вырубить шаблон ustring

upd: поменял код
 
Текущее время: 02:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru