介绍为什么string.empty()在字符串包含值时计算为true?
我正在使用具有用于电子表格中的数据进行排序对话框的MFC应用程序。该对话框包含多个控件,包括编辑框。当用户点击确定按钮时,对话框应该检索他们的偏好并关闭。
问题
当正从对话框中的信息,包含的信息串总是注册为空。我定在了琴弦位于该位置的断点,和价值观似乎可以找到很好,但是当我调用任何函数来确定字符串的大小,它显示为0。
代码
std::string min;
std::string max;
MinEdit.GetWindowText(&min[0], 20);
MinVal = atof(min.c_str());
MaxEdit.GetWindowText(&max[0], 20);
MaxVal = atof(max.c_str());
if (min.empty())
{
AfxMessageBox(_T("Please Enter A Minimum Value"));
return;
}
if (max.empty())
{
AfxMessageBox(_T("Please Enter A Maximum Value"));
return;
}
问题
为什么这些字符串总是注册为空?我检查了它们的长度,返回为零,但当我检查MinVal和MaxVal时,它们的值已输入到编辑框中。当这些字符串显示为空时,它们如何能够用值来初始化其他变量?
在MFC中最好使用'CString'。 'CWnd :: GetWindowText'有一个需要'CString&'的重载。 –