-
Notifications
You must be signed in to change notification settings - Fork 0
/
Tools.cpp
executable file
·89 lines (66 loc) · 2.51 KB
/
Tools.cpp
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include "EG_client.h"
////////////////////////////////////////////////////////////////////////////////////////
UINT ToUINT(const wchar_t* wszStr)
{
UINT iRet = wcstoul(wszStr, NULL, 10);
return ((iRet==ULONG_MAX) && (errno==ERANGE))? 0 : iRet;
}
////////////////////////////////////////////////////////////////////////////////////////
UINT ToUINT(const char* szStr)
{
UINT iRet = strtoul(szStr, NULL, 10);
return (((iRet==LONG_MAX) || (iRet==LONG_MIN)) && (errno==ERANGE))? 0 : iRet;
}
////////////////////////////////////////////////////////////////////////////////////////
int ToInt(const char* szStr)
{
int iRet = strtol(szStr, NULL, 10);
return (((iRet==LONG_MAX) || (iRet==LONG_MIN)) && (errno==ERANGE))? 0 : iRet;
}
////////////////////////////////////////////////////////////////////////////////////////
int ToInt(const wchar_t* wszStr)
{
int iRet = wcstol(wszStr, NULL, 10);
return (((iRet==LONG_MAX) || (iRet==LONG_MIN)) && (errno==ERANGE))? 0 : iRet;
}
////////////////////////////////////////////////////////////////////////////////////////
float ToFloat(const char* szStr)
{
double dRet = strtod(szStr, NULL);
return (((dRet==HUGE_VAL) || (dRet==-HUGE_VAL)) && (errno==ERANGE))? 0.0 : (float)dRet;
}
////////////////////////////////////////////////////////////////////////////////////////
float ToFloat(const wchar_t* wszStr)
{
double dRet = wcstod(wszStr, NULL);
return (((dRet==HUGE_VAL) || (dRet==-HUGE_VAL)) && (errno==ERANGE))? 0.0 : (float)dRet;
}
////////////////////////////////////////////////////////////////////////////////////////
std::string wstos(wchar_t const* wszStr, UINT uiCP_TO)
{
UINT uiSize = WideCharToMultiByte(uiCP_TO, 0, wszStr, -1, NULL, 0, NULL, NULL);
if(!uiSize)
return "";
char* szStr = new char[uiSize];
if(!szStr)
return "";
WideCharToMultiByte(uiCP_TO, 0, wszStr, -1, szStr, uiSize, NULL, NULL);
std::string scRet = szStr;
delete[] szStr;
return scRet;
}
////////////////////////////////////////////////////////////////////////////////////////
std::wstring stows(char const* szStr, UINT uiCP_FROM)
{
UINT uiSize = MultiByteToWideChar(uiCP_FROM, 0, szStr, -1, NULL, 0);
if(!uiSize)
return L"";
wchar_t* wszStr = new wchar_t[uiSize];
if(!wszStr)
return L"";
MultiByteToWideChar(uiCP_FROM, 0, szStr, -1, wszStr, uiSize);
std::wstring wscRet = wszStr;
delete[] wszStr;
return wscRet;
}
////////////////////////////////////////////////////////////////////////////////////////