公司网站工商备案怎么做,临沂小学网站建设,推广平台有哪些洛克,资源猫由于结构体中用到联合体(联合体需要确定分配内存分配大小)或其它因素#xff0c;需要用char数组来保存字符串#xff0c;但是在MFC中一般都是用CString来存放字条串。关于它们之间的转换#xff0c;在VS2008中有时会出现异常情况。在MSDN是这样写的#xff1a; CString ori…由于结构体中用到联合体(联合体需要确定分配内存分配大小)或其它因素需要用char数组来保存字符串但是在MFC中一般都是用CString来存放字条串。关于它们之间的转换在VS2008中有时会出现异常情况。在MSDN是这样写的 CString orig(Hello, World!); // Convert to a char* const size_t newsize 100; char nstring[newsize]; strcpy_s(nstring, orig); 但在实际应用中并不能通过总会在strcpy_s()函数中出错或者在nstring的后面跟着很多乱码尾巴。在网上查阅了一些方法。如下 方法一: char *p; CString strhello; pstr.GetBuffer(str.GetLength()); str.ReleaseBuffer(); 方法二: CString strhello; char ch[20]; memcpy(ch,str,str.GetLength()); 方法三: char *ch; CString strhello; ch(LPSTR)(LPCTSTR)str; 但总达不到期望的结果。随后再在网上查发现是Unicode字符集的问题。选择项目-项目属性或直接按altF7-配置属性在右边找到“字符集”将“使用Unicode字符集”改为“使用多字节字符集”。保存之后需要重新生成解决方案。这样上面的方法都可以通过并实现但是在方法二中最好不要使用memcpy直接用strcpy_s(char*, CString)就可以了因为用memcpy也会出现乱码尾巴。 如果不想改变Unicode字符集网上也有介绍方法但我没有试过在此列出来供网友们参考 CString strPath Ladfafs主声音文件fsfsa;int nLength strPath.GetLength();int nBytes WideCharToMultiByte(CP_ACP,0,strPath,nLength,NULL,0,NULL,NULL);char* VoicePath new char[ nBytes 1];memset(VoicePath,0,nLength 1);WideCharToMultiByte(CP_OEMCP, 0, strPath, nLength, VoicePath, nBytes, NULL, NULL); VoicePath[nBytes] 0;