首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

VS2008 Debug Assertion Failed!有关问题

2013-09-10 
VS2008 Debug Assertion Failed!问题求助窗口程序中的其中一个按键:void CwindowsDlg::OnBnClickedButton1

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下编译可以通过,但是运行的时候就会出现
VS2008 Debug Assertion Failed!有关问题

上网搜了下,有人说在Release下没问题,但是我这个在Release下运行也中断(编译可以通过)
VS2008 Debug Assertion Failed!有关问题

请教下各位大神, 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());
}

热点排行