4
Copyright (c) 2021 МГТУ им. Н.Э. Баумана, кафедра ИУ-6, Михаил Фетисов,
6
https://bmstu.codes/lsx/simodo
9
#include "simodo/inout/convert/functions.h"
14
namespace simodo::inout
18
* \brief Функция переводит строку UTF-8 в wchar_t
19
* \param str Строка UTF-8
20
* \return Строка wchar_t
22
std::wstring fromUtf8CharToWChar(const std::string & str)
24
std::wstring_convert<std::codecvt_utf8<wchar_t>> myconv;
25
return myconv.from_bytes(str);
29
* \brief Функция переводит строку wchar_t в UTF-8
30
* \param str Строка wchar_t
31
* \return Строка UTF-8
33
std::string fromWCharToUtf8Char(const std::wstring & str)
35
std::wstring_convert<std::codecvt_utf8<wchar_t>> myconv;
36
return myconv.to_bytes(str);
40
std::u16string toU16(const std::string &str)
42
std::wstring_convert<std::codecvt_utf8_utf16<char16_t>,char16_t> convert("(*fail*)",u"(*fail*)");
44
return convert.from_bytes(str);
47
std::string toU8(const std::u16string &str)
49
std::wstring_convert<std::codecvt_utf8_utf16<char16_t>,char16_t> convert("(*fail*)",u"(*fail*)");
51
return convert.to_bytes(str);
54
std::string clearNumberFractionalPart(std::string s)
56
auto dot_pos = s.find_first_of('.');
58
if (dot_pos == std::string::npos)
59
dot_pos = s.find_first_of(',');
61
if (dot_pos != std::string::npos)
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));