typedef unsigned short wchar_t;wchar_t *m_String;
char * sText;
sText=new char[5000];
char * sFileName;
sFileName=new char[5000];sText=(char *)(&(p_paParms[0].m_String));
CFile fp;
fp.Open("c:\\log1.txt",0x0002 );
fp.Write(&sText,strlen(sText));
fp.Write(sText,strlen(sText));
fp1.Write(sFileName,strlen(sFileName));
fp.Close();
文件里有关Stext的内容是乱码,sFileName是正确的。
p_paParms[1].m_String=(wchar_t *)sFileName;p_paParms[1].m_String里也是乱码,请大家帮忙看看好不好。谢谢了!
为什么
wchar_t *m_String;
而
char * sText
不统一都用UNICODE?
2 m_String是字符串的话,上面的转换似乎是指向指针的指针char **?
3.你要存储到文件的是unicode还是ansi
4.你为什么会有2个write操作
fp.Write(&sText,strlen(sText));
fp.Write(sText,strlen(sText));
第一个write ,fp.Write(&sText,strlen(sText));指向wchar的指针的指针,能用strlen?
第二write,第一个参数应该是const void * ,你用的2级指针,后面的strlen更不合适
sText=(char *)(&(p_paParms[0].m_String)); // 这个有问题,m_String本身就是指针了,你想同一级的强制转换,不用&(p_paParms[0].m_String)的,直接p_paParms[0].m_String就行,即sText=(char *)(p_paParms[0].m_String);fp.Write(&sText,strlen(sText)); // 这句不知道为什么你会想到这样写,是错的,你把sText的指针的地址传进去没啥用的,谁知道那个地址放了什么,我们只知道sText里放着一个串
CFile fp;
fp.Open("c:\\log1.txt",0x0002 );
fp.Write((void *)sText,wcslen(sText)*sizeof(WCHAR));//写入字节长度
fp.Close();
这句有问题m_String本来就指针了。。
按照你的写了,文件里还是乱码