非Unicode工程读取Unicode文件
2015-08-25 17:37
274 查看
MyUnicodeReader.h
MyUnicodeReader.cpp
#pragma once /************************************************************************/ /* 在“多字节字符集”属性的工程中读取Unicode文件 ** -----------------------------------注意------------------------------------------------------- ** -------------一定要确保读取的文件是标准的Unicode文件,即文件头两个字节是0xFFFE---------*/ /************************************************************************/ class MyUnicodeReader { public: MyUnicodeReader(void); ~MyUnicodeReader(void); FILE* file; bool Open(CString filePath); void Close(); //按行读取 bool ReadString(CString &s); };
MyUnicodeReader.cpp
#include "StdAfx.h" #include "MyUnicodeReader.h" #include <locale.h> #include <string> MyUnicodeReader::MyUnicodeReader(void) { } MyUnicodeReader::~MyUnicodeReader(void) { } bool MyUnicodeReader::Open( CString filePath ) { file=fopen(filePath, "rb"); //Unicode文件开始前两个字节应该是FFFE fseek(file, 2, SEEK_SET); return file!=NULL; } void MyUnicodeReader::Close() { fclose(file); } const int MAX_CHAR_NUM=1024; bool MyUnicodeReader::ReadString( CString &s ) { wchar_t buf[MAX_CHAR_NUM]; if (fgetws(buf, MAX_CHAR_NUM, file)==NULL) return false; size_t convertedChars = 0; char dst[MAX_CHAR_NUM]; setlocale(LC_CTYPE,"chs");// 处理汉字 wcstombs_s(&convertedChars, dst, MAX_CHAR_NUM, buf, MAX_CHAR_NUM); s=dst; return true; }
相关文章推荐
- package用法
- Swift - 将定位获取的经纬度转换为城市名
- 产品经理(PM)一秒理解MRD、PRD、BRD
- appium+python 自动化测试环境搭建
- Exchange2013---查看邮件跟踪日志
- Java文件下载
- const的常见用法
- c语言执行shell命令
- PE文件学习(二)数据目录表之导出表与导入表
- win32(三)
- Java程序执行超时——Future接口介绍
- iOS网络数据解析--XML解析详解(GDataXMLNode&原生NSXMLParser)
- MFC中改变编辑框文字大小、颜色的方法
- wamp mysql 中文乱码问题
- hdu 5387 Clock
- 基于虚拟linux+docker搭建hadoop完全分布式集群
- 反射机制
- UVALive 6657
- 【写一个自己的js库】 2.实现自己的调试日志
- ElasticSearch 模板文件配置