我想將wchar_t數組轉換爲int,我也在Google上搜索但沒有解決我的問題?從wchar_t轉換爲int
我的意思是,如果wchar_t的含有 「54」,我想轉換成int是54
GetWindowText(hWndEdit, wMinute, 10);
iMinutes = (int)wMinute;
不工作的權利。
如果有人能幫助我,我很高興。
我想將wchar_t數組轉換爲int,我也在Google上搜索但沒有解決我的問題?從wchar_t轉換爲int
我的意思是,如果wchar_t的含有 「54」,我想轉換成int是54
GetWindowText(hWndEdit, wMinute, 10);
iMinutes = (int)wMinute;
不工作的權利。
如果有人能幫助我,我很高興。
你的意思是要將wchar_t數組轉換爲int?
可以使用wcstol功能,或者讓自己明白:
在wchar_t的數組元素的每個爲2個字節。 如果wchar_t的一個[] = L 「45」,的存儲器是:
34 00 35 00 00 00
34是ASCII 「4」 十六進制值,圖35是ASCII 「5」
如果轉換六值直接像這樣:
int i = (int)a[0];
我將包含52,爲什麼?因爲,現在我包含值0x34,它將在十進制中爲52。
好吧,現在,如何讓i = 45如你所願?
這是我簡單的函數來將wchar_t轉換爲像你所需要的int。這只是我的想法: 首先,您需要從[0]中獲得值4,從[1]中獲得5。你可以通過減去0x34到0x30,或者(減去52到48)來獲得,與其他元素一樣。然後,將每個結果與其係數相乘,例如:4 * 10和5 * 1(請參閱下文了解如何獲取係數)。
int miniPow(int a, int b) // power with small number - just demo
{
int r = 1;
for (int i = 0; i < b; i++)
{
r *= a;
}
return r;
}
int WideToInt(wchar_t a[])
{
int i = 0;
int len = wcslen(a);
int coefficient = 0;
int RawNumber = 0;
int Number = 0;
for (int k = 0; k < len; k++)
{
coefficient = miniPow(10, len - 1 - k);
RawNumber = (int)a[k];
Number = RawNumber - 48;
i += coefficient * Number;
}
return i;
}
你想要的功能是wcstol
。像這樣
GetWindowText(hWndEdit, wMinute, 10);
iMinutes = wcstol(wMinute, 0, 10);
但我同意H2C03這是基本的東西。你真的應該學習如何爲自己找到這種信息。
這段代碼沒有錯誤檢查,也許你可以測試自己,並找出如何檢查轉換是否成功。
類型化並不神奇。它不會做你認爲它做的事。你正在尋找'std :: strtol()'等。但首先閱讀初學C++教程,這太基本了。哦,那不是'wchar_t',而是'wchar_t'的**數組**。不要誤導讀者! – 2013-11-24 08:39:47