C++ 在我的MFC应用程序中获取意外错误

C++ 在我的MFC应用程序中获取意外错误,c++,visual-c++,mfc,c-strings,C++,Visual C++,Mfc,C Strings,我试图一个字符一个字符地访问CString的元素。 以下代码行中出现错误: void CTOTALTIMECALCDlg::OnBnClickedOk() { // TODO: Add your control notification handler code here CString lstring; m_Timeget.GetWindowText(lstring); MessageBox(lstring[0]); CDialogEx::OnOK()

我试图一个字符一个字符地访问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::MessageBoxWLPCTSTR,LPCTSTR,UINT': 无法在第行将参数1从“wchar\u t”转换为“LPCTSTR” MessageBoxlstring[0]


如果您只想打印MessageBox中的第一个字符,那么不要期望它从LPCTSTR->LPCWSTR Unicode->const WCHAR*转换为WCHAR\t

打印整个字符串,或正确打印第一个字符

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();
}
接受LPCTSTR作为参数。 LPCTSTR在Unicode设置中解析为常量wchar_t*。 返回一个TCHAR,它是Unicode格式的wchar\u t。 请参见下面的代码

//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());

我只使用索引0来测试我是否能够访问数据,,,我想对该L字符串中存在的数据执行操作,然后在我的gui@user78766你的问题中没有提到这一点。如果CString不可用,则可以访问数据。我已经尝试使用[]和GetAt这两个函数返回相同的错误,,,,,我甚至尝试通过查看msdn中的示例初始化字符串,,,,即使这样,我也得到了相同的错误,正如我所看到的,代码似乎很好,,,还有一些错误@user78766没有意外错误。你问题中的错误是预料之中的。如果MessageBox需要一个数组或指针,那么一个字符就不能做到这一点。请仔细查看MessageBox接受的参数。wchar_t*不等于wchar_t。