我在代码中使用wcstombs_s
将CString
转换为char*
。这是代码:
AddItemToListIncludeSubFolder(CString FolderPath, CString Parent)
{
char szInputPath[1024];
memset(szInputPath,1024,'\0');
size_t CharactersConverted=0;
wcstombs_s(&CharactersConverted, szInputPath, FolderPath.GetLength()+1,
FolderPath, _TRUNCATE);
}
有时会引发异常。内存异常。当
wcstombs_s
太长(例如1024个字符)或我做错了什么时,CString
无法工作。 最佳答案
wcstombs_s
的第三个参数是输出缓冲区的大小,而不是要转换的字符串的大小。如果FolderPath
的长度超过1024个字符,则您正在写内存超出范围,因为wcstombs_s
认为它的缓冲区比它大。
尝试以下方法:
wcstombs_s(&CharactersConverted, szInputPath, sizeof(szInputPath),
FolderPath, _TRUNCATE);
关于c++ - wcstombs_s无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4222804/