好的,这有什么问题?
void CMFCApplication1Dlg::OnBnClickedOk()
{
std::vector<std::string> vectorList;
try
{
CMSAToolsLibraryWrapper wrapper;
__int64 lResult = wrapper.SetDatabasePath(std::string("d:\\Test.xml"));
__int64 iNumPublishersRead = 0;
if (wrapper.ReadPublisherData(iNumPublishersRead))
{
vectorList = wrapper.GetPersonnelNames(true);
for (std::string& strName : vectorList)
{
m_lbNames.AddString((LPCTSTR)strName.c_str());
}
}
}
catch(_com_error *e)
{
AfxMessageBox(_T("Problem"));
}
//CDialogEx::OnOK();
}
如果我在AddString
电话上放置断点,则strName
值是正确的。但我的CListBox
最终会收到中文字符。为什么?
答案 0 :(得分:3)
您正在向需要int sum = Enumerable.Range(0, n).Sum();
字符串的函数发送char
个字符串。 wchar_t
强制转换掩盖了错误消息,告知您错误。
答案 1 :(得分:-1)
这有效:
void CMFCApplication1Dlg::OnBnClickedOk()
{
std::vector<std::string> vectorList;
try
{
CMSAToolsLibraryWrapper wrapper;
__int64 lResult = wrapper.SetDatabasePath(std::string("d:\\Test.xml"));
__int64 iNumPublishersRead = 0;
if (wrapper.ReadPublisherData(iNumPublishersRead))
{
vectorList = wrapper.GetPersonnelNames(true);
for (std::string& strName : vectorList)
{
CString strName2(strName.c_str());
m_lbNames.AddString(strName2);
}
UpdateData(FALSE);
}
}
catch(_com_error *e)
{
AfxMessageBox(_T("Problem"));
}
}
首先将std::string
放入CString
,然后将 与AddString
一起传递。