我想将wchar_t数组转换为int,我也在Google上搜索但没有解决我的问题???
我的意思是,如果wchar_t包含“54”,我想转换成int是54。
GetWindowText(hWndEdit, wMinute, 10);
iMinutes = (int)wMinute;
不能正常工作。
如果有人能帮助我,我很高兴。
答案 0 :(得分:2)
您想要的功能是wcstol
。喜欢这个
GetWindowText(hWndEdit, wMinute, 10);
iMinutes = wcstol(wMinute, 0, 10);
但我同意H2C03这是基本的东西。你真的应该学习如何为自己找到这种信息。
此代码中没有错误检查,也许您可以测试自己并找出如何检查转换是否成功。
答案 1 :(得分:1)
你的意思是想将wchar_t数组转换为int?
您可以使用wcstol函数,或让自己理解:
wchar_t数组中的每个元素都是2个字节。 如果wchar_t a [] = L“45”,则a的记忆是:
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;
}