VS2008 Debug Assertion Failed!问题求助
窗口程序中的其中一个按键:
void CwindowsDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CString filename;
CFileDialog dlg(TRUE);
if(dlg.DoModal()==IDOK)
filename=dlg.GetPathName();
char *pbuf = NULL;
int num = filename.GetLength();
pbuf = new char[ num + 1 ];
memset( pbuf,0,num+1 );
memcpy( pbuf,filename.GetBuffer( num ),num );
const char *file = pbuf;
delete pbuf;
调用一个处理filename的子函数decode(filename),在之前已定义
}
Debug下编译可以通过,但是运行的时候就会出现
上网搜了下,有人说在Release下没问题,但是我这个在Release下运行也中断(编译可以通过)
请教下各位大神, Debug Assertion Failed!这个问题如何解决,多谢了!!! vs2008 debug
[解决办法]
你的程序是 unicode 的吧?
const char* s = filename; 应该是会报错的吧?
const wchar* p = filename;
wstring ws = p;
string s = ws2s(ws);
decode(s.c_str());
string ws2s(const wstring& ws)
{
int len = WideCharToMultiByte(CP_ACP,0,ws.c_str(),ws.size(),NULL,0,NULL,NULL);
if (0 == len)
return "";
vector<char> buf;
buf.resize(len);
WideCharToMultiByte(CP_ACP,0,ws.c_str(),ws.size(),&buf[0],len,NULL,NULL);
return string(buf.begin(), buf.end());
}