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

#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
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值