写在开始
最近在做一个东东,遇到文件读取的问题,遂开始研究,使用C++读取文本文件比较简单,也是一个很好的切入点,所以进行了一些小实验。
这里仅仅举例,使用ANSI,UNICODE,UTF-8三种常用的文本文件作为示例。
关于文本文件的文件头
第一 ANSI文件的文件头为空,不需要处理;
第二 UNICODE文件的文件头为0xFF,0xFE共计两个字节,读取时需要偏移两个字节再行读取;
第三 UTF-8文件的文件头为0xEF,0xBB,0xBF共计三个字节,读取时需要偏移三个字节后再行读取;
关于文本文件类型的判断
根据文本文件的文件头,就可以判断文本文件的类型了。
假设有如下文件类型定义:
typedef enum FileType
{
ANSI = 0,
UNICODE,
UTF8,
}FILETYPE;
我们就可以根据上述特性,来判断文本文件的类型了,下面是一段示例代码:
FILETYPE GetTextFileType(const std::string & strFileName)
{
FILETYPE fileType = ANSI;
std::ifstream file;
file.open(strFileName.c_str(), std::ios_base::in);
bool bUnicodeFile = false;
if (file.good())
{