介紹爲什麼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&'的重載。 –