设为首页 加入收藏

TOP

用VC++访问文本文件(二)
2014-11-23 21:30:19 】 浏览:996
Tags:访问 文本 文件
利用Windows的API,MultiByToWideChar将其转为Unicode,当然了,如果文件就是Unicode(LE)的话,处理掉BOM就可以直接读取了,如果是Unicode(BE)的话,得倒一下字节序。

下面给出我实现的类的代码。

这是头文件TxtReader.h:

#pragma once

#include
#include

enum
{
TXT_TYPE_NONE = 0,
TXT_TYPE_ANSI,
TXT_TYPE_UNICODE_LE,
TXT_TYPE_UNICODE_BE,
TXT_TYPE_UTF8
};

class CTxtReader
{
public:
CTxtReader(void);
~CTxtReader(void);

BOOL Open(WCHAR* pFileName);
void Close();
BOOL Read(WCHAR* pBuff, DWORD dwToRead, DWORD& dwRead);
LONG Tell();

protected:
FILE* m_pFile;
INT m_iType;
CPINFO m_codepage;
INT m_iMaxLeadBytePairNum;

BOOL NeedNextByte(BYTE byFirstByte);
};
这是CPP文件TxtReader.cpp:

#include "TxtReader.h"

CTxtReader::CTxtReader(void)
{
m_pFile = NULL;
m_iType = TXT_TYPE_NONE;

GetCPInfo(CP_ACP, &m_codepage);

m_iMaxLeadBytePairNum = 0;
int i;
for(i=0; i<5; i++)
{
if(m_codepage.LeadByte[i*2]==0 && m_codepage.LeadByte[i*2+1]==0)
break;
++m_iMaxLeadBytePairNum;
}
}

CTxtReader::~CTxtReader(void)
{
Close();
}

BOOL CTxtReader::Open(WCHAR* pFileName)
{

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Union和Struct的内存分配 下一篇大端小端存储模式以及其对Union数..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目