gpt4 book ai didi

c++ - 将双字节字符转换为整数 C++

转载 作者:行者123 更新时间:2023-11-28 07:40:53 24 4
gpt4 key购买 nike

我正在用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com