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

标签 c++ mfc cjk

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

相关文章:

c++ - Visual Studio 中的 Qml

c++ - 屏幕外和可嵌入浏览器比较(用于游戏)

c++ - 为特定的 mfc dll 调用 AfxEnableMemoryLeakDump

android - 如何在 Android 的 XMLWorker 中使用 iText 中的 CJK 字体?

ruby - 使用 Ruby 在文件名中包含中文字符的递​​归目录列表

c++ - 在 C 中创建 cout 函数?

C++使用派生类的对象访问基类的 protected 成员函数

C++ MFC : Memory Leak When Creating CString From Char*

c++ - 如何在MFC2010中解码动画gif文件

php正则表达式和汉字