loom

Форк
0
/
conversion_functions.cpp 
71 строка · 1.8 Кб
1
/*
2
MIT License
3

4
Copyright (c) 2021 МГТУ им. Н.Э. Баумана, кафедра ИУ-6, Михаил Фетисов,
5

6
https://bmstu.codes/lsx/simodo
7
*/
8

9
#include "simodo/inout/convert/functions.h"
10

11
#include <locale>
12
#include <codecvt>
13

14
namespace simodo::inout
15
{
16
#ifdef CROSS_WIN
17
    /*!
18
     * \brief Функция переводит строку UTF-8 в wchar_t
19
     * \param str     Строка UTF-8
20
     * \return        Строка wchar_t
21
     */
22
    std::wstring fromUtf8CharToWChar(const std::string & str)
23
    {
24
        std::wstring_convert<std::codecvt_utf8<wchar_t>> myconv;
25
        return myconv.from_bytes(str);
26
    }
27

28
    /*!
29
     * \brief Функция переводит строку wchar_t в UTF-8
30
     * \param str     Строка wchar_t
31
     * \return        Строка UTF-8
32
     */
33
    std::string fromWCharToUtf8Char(const std::wstring & str)
34
    {
35
        std::wstring_convert<std::codecvt_utf8<wchar_t>> myconv;
36
        return myconv.to_bytes(str);
37
    }
38
#endif
39

40
std::u16string toU16(const std::string &str)
41
{
42
    std::wstring_convert<std::codecvt_utf8_utf16<char16_t>,char16_t> convert("(*fail*)",u"(*fail*)");
43

44
    return convert.from_bytes(str);
45
}
46

47
std::string toU8(const std::u16string &str)
48
{
49
    std::wstring_convert<std::codecvt_utf8_utf16<char16_t>,char16_t> convert("(*fail*)",u"(*fail*)");
50

51
    return convert.to_bytes(str);
52
}
53

54
std::string clearNumberFractionalPart(std::string s)
55
{
56
    auto dot_pos = s.find_first_of('.');
57

58
    if (dot_pos == std::string::npos)
59
        dot_pos = s.find_first_of(',');
60

61
    if (dot_pos != std::string::npos)
62
    {
63
        auto not_0_pos = s.find_last_not_of('0');
64
        if (not_0_pos != std::string::npos)
65
            s = s.substr(0,not_0_pos + ((not_0_pos == dot_pos) ? 2 : 1));
66
    }
67

68
    return s;
69
}
70

71
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.