关闭

unicode文本文件存储类(C++)

469人阅读 评论(1) 收藏 举报
#include <stdio.h>
#include <windows.h>

class TUnicodeFileWriter
{
private:
   FILE *FFS;
   TUnicodeFileWriter();
public:
   TUnicodeFileWriter( char *AFileName)
   {
      FFS = fopen( AFileName, "wb");
      char h1 = 0xff, h2 = 0xfe;
      fwrite( &h1, 1, 1, FFS);
      fwrite( &h2, 1, 1, FFS);
   }
   ~TUnicodeFileWriter()
   {
      fclose( FFS);
   }
public:
   void WriteLine( char *AStr)
   {
      WriteString( AStr);
      WriteString( "/r/n");
   }
   void WriteString( char *AStr)
   {
      wchar_t *ws = 0;
      //获取unicode码的长度。好像不论字符串是否为空,长度都是实际长度
      //加1,最后一个unicode码都是00 00
      int len = MultiByteToWideChar( CP_ACP, 0, AStr, -1,  NULL, NULL);

      ws = new wchar_t[ len];

      MultiByteToWideChar( CP_ACP, 0, AStr, -1, ws, len);
      //写入时需去掉最后一个空unicode码
      len = len - 1;

      fwrite( ws, sizeof( wchar_t), len, FFS);

      delete ws;
   }
};

使用方法:
void write_unicode( void)
{
   TUnicodeFileWriter ufw( "c://1.txt");
   ufw.WriteLine( "a你好a吗,嘿嘿!a");
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:727次
    • 积分:17
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章分类
    文章存档
    最新评论