我正在用 C++ 构建一个 MFC 项目。我有一个文本字段,用户需要在其中输入一个数字。当使用英文键盘时,我可以将它转换为整数。但是当用户切换到日文键盘时,它就不起作用了。
我知道日语键盘会创建双字节字符。但我不知道如何将它们转换为整数。
抱歉缺少信息。
我的目的是检查文本字段中输入的用户类型是否为数字。 但它无法识别日文键盘的数字。 我尝试了一些方法,比如:strtol()、_wtoi。 但是结果(频率)总是0; 我调试时得到的字符串是123456789而不是123456789。 这是我的代码
CString strFrequency;
GetDlgItem(IDC_EDIT_FREQUENCY)->GetWindowText(strFrequency);
if(strFrequency.IsEmpty()){
CDialog::OnOK();
return;
}
for(int i=1; i<strFrequency.GetLength(); i+=2) {
if(!std::isdigit(strFrequency[i])){
MessageBox("数字で入力してください。","発表支援");
return;
}
}
int frequency = atoi(strFrequency);
大家可以帮帮我吗?
提前致谢
最佳答案
CString strFrequency;
GetDlgItem(IDC_EDIT_FREQUENCY)->GetWindowText(strFrequency);
DWORD flags = LCMAP_HALFWIDTH;
const int size = strFrequency.GetLength() / 2 + 1;
char* s = new char[size];
ZeroMemory(s, size);
LCMapString(LOCALE_SYSTEM_DEFAULT,
flags,
strFrequency,
strFrequency.GetLength() + 1,
s,
size);
CString convertedText = s;
我解决了。日文键盘输入的字符串(strFrequency)是全角长度。所以我将一个全角字符串转换为半角字符串。然后我可以检查它是否是一个数字字符串。
关于c++ - 将双字节字符转换为整数 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15874089/