在壇子上常見有人問字符串轉換的問題,下面貼兩個關于寬窄字符串轉換以及16進制字符轉換為整數的函數mark一下。用到了ATL的CStringW與CStringA,如果用char*與wchar_t*也是一樣的轉換~
1
// 16 string to int
2
int convert16StringToInt(const TCHAR* string)
3

{
4
int ret = 0;
5
int offset = 0;
6
if (string[0] == '0' && (string[1] == 'x' || string[1] == 'X'))
{
7
offset = 2 ;
8
}
9
int length = ::_tcsclen(string);
10
if (length <= 10 && length > 0)
{
11
TCHAR* pszEnd;
12
ret = ::_tcstol((string + offset), &pszEnd, 16);
13
}
14
15
return ret;
16
}
17
18
// CStringA to CStringW
19
CStringW convertStringA2W(CStringA srcStr)
20

{
21
wchar_t wc[MAX_PATH];
22
MultiByteToWideChar(CP_ACP, 0, (LPCSTR) srcStr, -1, wc, MAX_PATH);
23
24
CStringW dstStr;
25
dstStr.Format(L"%s", wc);
26
return dstStr;
27
}
// 16 string to int2
int convert16StringToInt(const TCHAR* string)3


{4
int ret = 0;5
int offset = 0;6

if (string[0] == '0' && (string[1] == 'x' || string[1] == 'X'))
{7
offset = 2 ;8
}9
int length = ::_tcsclen(string);10

if (length <= 10 && length > 0)
{11
TCHAR* pszEnd;12
ret = ::_tcstol((string + offset), &pszEnd, 16);13
}14

15
return ret;16
}17

18
// CStringA to CStringW19
CStringW convertStringA2W(CStringA srcStr)20


{21
wchar_t wc[MAX_PATH];22
MultiByteToWideChar(CP_ACP, 0, (LPCSTR) srcStr, -1, wc, MAX_PATH);23

24
CStringW dstStr;25
dstStr.Format(L"%s", wc);26
return dstStr;27
}


