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

原创 2007年09月17日 18:47:00
#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");
}

C++中Ansi、Unicode、UTF8字符串之间的转换和写入文本文件

Ansi字符串我们最熟悉,英文占一个字节,汉字2个字节,以一个\0结尾,常用于txt文本文件 Unicode字符串,每个字符(汉字、英文字母)都占2个字节,以2个连续的\0结尾,NT操作系统内核用的...
  • tongjing524
  • tongjing524
  • 2015年08月14日 11:13
  • 752

在c++支持unicode转换和unicode文件保存

/********************************************************************   created:  2008/01/11   creat...
  • Redeom
  • Redeom
  • 2008年04月02日 00:16
  • 2848

写UNICODE格式的文本日志文件(UNICODE编码)

HANDLE CreateUnicodeFile(CStringW strPath){    HANDLE hFile=NULL;    //创建文件    hFile=CreateFile(strP...
  • abcpanpeng
  • abcpanpeng
  • 2007年01月13日 09:19
  • 2569

【代码备忘】C++ fstream 读写 unicode 文件

欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611  所谓的unicode文件,无非就是在文件头部插入了 0xFFFE的标志...
  • xinmuba
  • xinmuba
  • 2014年04月28日 09:22
  • 2276

ABCpdf.NET 的简易使用指南

ABCpdf.NET 的简易使用指南   简单介绍    iTextSharp是一个很强大的动态创建pdf的工具, 可是缺少一个可以直接转换html到pdf的功能, 而这个功能用ABCpdf.NE...
  • scq503
  • scq503
  • 2015年01月29日 16:03
  • 424

UniCode 下 CString 转 char* 的方法

今天进行文件操作时,将CString的GetBuffer()后直接倒到char数组后写入文件发现 每个字符与字符之间都有一个空格存在,而且有内容丢失。原来CString类对象GetBuffer(),后...
  • qq_23992597
  • qq_23992597
  • 2016年07月01日 15:31
  • 368

C++实现unicode码转换成UTF-16的加码和解码函数

Unicode的实现方式不同于编码方式。一个字符的Unicode编码是确定的,但是在实际存储和传输过程中,由于不同系统平台的设计不一定一致,以及出于节省空间的目的,对Unicode编码的实现方式有所不...
  • shuilan0066
  • shuilan0066
  • 2012年08月14日 17:14
  • 3716

终于找到一个写Unicode 文本文件的方法了。

//原来一直用C中wfopen,putwc这些东西写unicode的文件//一直没发现用wstring,wchar_t 的方法。 //最近在下面这个位置,发现一个好东西。//http://www.co...
  • HewpKanXue
  • HewpKanXue
  • 2007年04月25日 17:14
  • 2336

C++11

转自 https://zh.wikipedia.org/wiki/C%2B%2B11 C++11,先前被称作C++0x,即ISO/IEC 14882:2011,是目前的C++编程语言的正式标准...
  • arau_sh
  • arau_sh
  • 2013年05月08日 21:20
  • 1247

第二天:char 详解

字节:byte,它是计算机的数据存储单元,每个字节包括8个二进制“位-bit”,可以保存8位的二进制数。   计算机内存和硬盘等存储空间的管理都是以字节为基本单位,每个字节都有自己的编号,而“字符-...
  • dacainiao007
  • dacainiao007
  • 2012年05月26日 19:21
  • 580
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:unicode文本文件存储类(C++)
举报原因:
原因补充:

(最多只允许输入30个字)