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里也是乱码,请大家帮忙看看好不好。谢谢了!

解决方案 »

  1.   

    我觉得是U不UNICODE的问题。
    为什么
    wchar_t *m_String;

    char * sText
    不统一都用UNICODE?
      

  2.   

    typedef unsigned short wchar_t;    //什么意思
      

  3.   

    sText=(char *)(&(p_paParms[0].m_String));1 m_paParms是什么类型的数组,m_String是char还是wchar
    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更不合适
      

  4.   

    fp.Write(&sText,strlen(sText));  这句话有问题
      

  5.   

    看出你对指针还理解得不够深``
    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里放着一个串
      

  6.   

    p_paParms[0]里的 m_String 是wchar_t * 类型
      

  7.   

    wchar_t * sText=(p_paParms[0].m_String); 
    CFile fp;
    fp.Open("c:\\log1.txt",0x0002 );
    fp.Write((void *)sText,wcslen(sText)*sizeof(WCHAR));//写入字节长度
    fp.Close();
      

  8.   

    sText=(char *)(&(p_paParms[0].m_String));
    这句有问题m_String本来就指针了。。
      

  9.   

    vieri_ch(尘雨-自在飞花轻似梦,无边丝雨细如愁) :
      按照你的写了,文件里还是乱码
      

  10.   

    是正确的``如果你那里有UltraEdit或其他的十六进制、二进制编辑器,你用它来看``就知道里面内容是正确``要不你自己个程序``读出来就知道是一样的``不过前面那段写入的是unicode,所以是两个字节表示一个字符
      

  11.   

    你要存储到文件的是unicode还是ansi?这个问题要搞清楚才行