#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");
}
#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");
}