Re: How to read Unicode(Big-Endian) text file(s) in Non-MFC
"Ulrich Eckhardt" <eckhardt@satorlaser.com> wrote in message
news:oi7t85-odo.ln1@satorlaser.homedns.org...
wchar_t *data = new wchar_t[flen + 1];
Don't do this. In C++, use
std::vector<wchar_t> data(flen+1);
**************************************************************
#1
===
void readUTF8(FILE *file)
{
long flen;
flen = _filelength(_fileno(file));
char *data = new char[flen];
wchar_t *dataW = new wchar_t[flen];
fseek(file, 3, SEEK_SET);
fread(data, sizeof(char), flen-3, file);
fclose(file);
file = NULL;
data[flen-3] = '\0';
//convert utf-8 to Unicode (utf-16)
MultiByteToWideChar(CP_UTF8 , 0, data, -1, dataW, flen-3);
SetWindowText(hwndEdit, dataW);
delete []data;
delete []dataW;
}
#2
===
#include <vector>
.....
.....
void readUTF8(FILE *file)
{
long flen;
flen = _filelength(_fileno(file));
std::vector<char> data(flen);
std::vector<wchar_t> dataW(flen);
fseek(file, 3, SEEK_SET);
fread(&data[0], sizeof(char), flen-3, file);
fclose(file);
file = NULL;
data[flen-3] = '\0';
//convert utf-8 to Unicode (utf-16)
MultiByteToWideChar(CP_UTF8 , 0, (char*)&data[0], -1,(wchar_t*)&dataW[0],
flen-3);
SetWindowText(hwndEdit, (wchar_t*)&dataW[0]);
}
*********************************************************
Q1: Why are you prefering #2 ? What are the advantages ?
(I'm asking because.... I have no idea about STl's.... but I want to learn
:) )