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

c++ builder 中Ansi转换成Uicode txt文件,该怎么解决

2012-02-03 
c++ builder 中Ansi转换成Uicode txt文件c++builder 中 默认是Ansi 编码格式的 如果我想把一段 String类型

c++ builder 中Ansi转换成Uicode txt文件
c++builder 中 默认是Ansi 编码格式的 如果我想把一段 String类型的编码 写到 txt文件中 该怎么做呢 本人新手 急用 在线等啊

[解决办法]
如果这段编码全部是Ansi 编码格式的,可用这个函数一个一个地转成UNICODE码然后存入文件

C/C++ code
  /************************************************************************/     /*   Function   Name   :   CFileOpt::Ansi2Unicode                                                               */     /*   Description       :   Convert   ANSI   string   to   UNICODE   string                                 */     /*   In                         :   ansi.   ansi   string                                                                         */     /*   Return                 :   return   a   pointer   to   unicode   string   if   succeeds,             */     /*                                   return   NULL   if   fails.                                                                 */     /*   Note                     :   Free   the   returned   string   with   "delete[]"                           */     /************************************************************************/     wchar_t   *   CFileOpt::Ansi2Unicode(const   char   *ansi)     {             assert   (ansi   !=   NULL);                 unsigned   int   len   =   strlen(ansi)   +   1;                         wchar_t   *unicode   =   new   wchar_t[len];             if   (NULL   ==   unicode)   return   NULL;                         memset(unicode,   0,   len   *   sizeof(wchar_t));                         MultiByteToWideChar(                     CP_ACP,                     0,                       ansi,                     len,                       unicode,                     len);                         return   unicode;     }
[解决办法]
我要是想 把返回的unicode 存入txt文件 加入文件流 是 out<<unicode吗?
[解决办法]
1.你所说的c++builder 中 默认是Ansi 编码格式的是针对BCB6版本的,BCB2009开始,默认就是unicode的
2.在bcb中,ansi转unicode很简单,直接赋值就可以了
AnsiString x="中国";
WideString y=x; //y 就是unicode的"中国"
3.bcb6的流不支持unicode,就是说你不能用
out<<unicode ; //无论unicode 是WideString 或wchar_t *
以下是测试:
C/C++ code
     AnsiString x="123中国";     WideString y=x;     char  buff[20];     int len;     len= y.Length()*2;     memcpy(buff,y.c_bstr(),len);     ofstream out("d:\\temp\\aa.txt");     out << (char)0xff << (char)0xfe;  //unicode文件头标识     for(int i=0;i<len;i++)       out << buff[i];
[解决办法]
学习后给予标记.

热点排行