【问题标题】:String to Integer Conversion in MFC [duplicate]MFC中的字符串到整数转换[重复]
【发布时间】:2015-06-06 02:15:22
【问题描述】:

我只是 MFC 平台的初学者。我只是在尝试一个简单的 pgm。单击按钮时,在 2 个编辑框中获取 2 个数字并在第三个编辑框中显示总和。

这是我的代码:

void CMineDlg::OnEnChangeNumber1()
{
   CString strNum1,strNum2;
   m_Number1.GetWindowText(strNum1,10);   //m_NUmber1 is variable to 1st edit box.
   m_Number2.GetWindowText(strNum2,10);   //m_Number2 is variable to 2nd edit box.
} 

void CMineDlg::OnBnClickedSum()
{
   m_Result=m_Number1+m_Number2;
}

我知道我必须将字符串转换为整数。但我不知道该怎么做。请帮忙。

【问题讨论】:

  • 如果有与此相关的线程请发给她。我没找到。请帮忙。

标签: c++ mfc editbox


【解决方案1】:

您可以使用类向导添加整数类型的变量并将它们与编辑框相关联。然后,在OnEnChangeNumber1 事件处理程序(或OnBnClickedSum)中,您只需调用UpdateData(TRUE);,这会导致这些变量更新它们的值。之后,您可以对这些整数变量求和。

【讨论】:

  • 感谢您的回复。我已经为编辑框创建了整数变量,并将它们与编辑框相关联。在按钮事件处理程序中,我添加了两个数字。它没有错误。但是当它执行时,第一个编辑框显示0,第二个显示-858993460,即使没有单击按钮,结果编辑框也显示-858993460。我想使用 GetWindowText 获取用户输入。所以输入将是字符串类型。还请帮助字符串到整数的转换。
  • 对于奇怪的负值,您应该在显示对话框之前初始化整数变量。您可以在构造函数或OnInitDialog 方法中执行此操作。同样,您不需要将字符串转换为整数,反之亦然。 MFC 会为您完成。当您调用UpdateData(TRUE) 时,MFC 在内部通过GetWindowsText 从文本框中获取字符串值,并将它们转换为相关变量的适当类型。当您调用UpdateData(FALSE) 时,MFC 会将您关联的变量转换为字符串并填充文本框。
  • 当然。如果m_Result 与文本框相关联,则应调用UpdateData(FALSE) 将结果传播到文本框。
【解决方案2】:

使用

CString strNum = _T("11");  //CString variable
int num;                //Integer Variable
_stscanf(strNum, _T("%d"), &num);   //Conversion

或者

num = atoi((char*)(LPCTSTR)strNum);  

【讨论】:

  • 这不符合 UNICODE
【解决方案3】:

这样做的正确 UNICODE 兼容方式:

CString str = _T("10");
int nVal = _ttoi(str);
__int64 = _ttoi64(str);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-17
    • 2020-01-06
    • 2010-11-21
    • 2013-10-06
    • 2015-03-26
    • 2011-07-01
    • 1970-01-01
    相关资源
    最近更新 更多