我试图逐个字符地访问CString
元素
我在以下代码行中收到错误:
void CTOTALTIMECALCDlg::OnBnClickedOk()
{
// TODO: Add your control notification handler code here
CString lstring;
m_Timeget.GetWindowText(lstring);
MessageBox(lstring[0]);
CDialogEx::OnOK();
}
错误:
"错误1错误C2664:' int CWnd :: MessageBoxW(LPCTSTR,LPCTSTR,UINT)' : 无法从' wchar_t'转换参数1到LPCTSTR'"在线 的"的MessageBox(lstring [0]);"
答案 0 :(得分:2)
如果您只想打印MessageBox
中的第一个字符,请不要指望它从LPCTSTR
转换为> LPCWSTR
(Unicode) - > const WCHAR*
至wchar_t
。
打印整个CString
,或正确打印第一个字符。
void CTOTALTIMECALCDlg::OnBnClickedOk()
{
// TODO: Add your control notification handler code here
CString lstring;
m_Timeget.GetWindowText(lstring);
if (!lstring.IsEmpty())
MessageBox(lstring.Left(1));
CDialogEx::OnOK();
}
MessageBox接受LPCTSTR
作为参数
Unicode设置中LPCTSTR
已解决const wchar_t*
CString::operator[ ]
返回TCHAR
,其中wchar_t
为Unicode
CString::operator LPCTSTR()
请参见下面的代码
//You are doing this:
MessageBox(wchar_t);
//It wants this:
MessageBox(wchar_t*);
//CString::Left will return a new CString
MessageBox(CString::Left . CString::operator LPCTSTR());