// 要包含的头文件和命名空间
#include <iostream>
#include <sstream>
#include <fstream>
#include <string>
using namespace std;
// 宽字节字符串转成ansistring
int W2CH(const wchar_t* pUnicode, AnsiString& strDes)
{
char *pANSI = NULL;
int nByte = 0;
nByte = WideCharToMultiByte(CP_ACP, 0, pUnicode, -1, NULL, 0, NULL, NULL);
pANSI = (char*)malloc(nByte);
WideCharToMultiByte(CP_ACP, 0, pUnicode, -1, pANSI, nByte, NULL, NULL);
strDes = AnsiString(pANSI);
free(pANSI);
return strDes.Length();
}
// 示例函数
void testFunc()
{
ifstream fin;
fin.open("E:\\test\\aa.txt", ios::binary);
size_t index = 2;
int iLine = 0;
std::string strLineAnsi;
std::wstring wstrLine;
while (!fin.eof())
{
fin.seekg(index, ios::beg);
wchar_t wch;
fin.read((char *)(&wch), 2);
if (wch == 0x000D || wch == '\n') // 判断回车换行符
{
AnsiString strDes = "";
int nDesLen = W2CH(wstrLine.c_str(), strDes);
wstrLine.erase(0, wstrLine.size() + 1);
iLine++;
index += 2; // 跳过回车符和行开头符
}
else
{
wstrLine.append(1, wch);
index += 2;
}
}
fin.clear();
fin.close();
}
注:开发环境win7,bcb6