【コードメモ】C++fstream読み書きunicodeファイル
1931 ワード
私达のQQ群に参加することを歓迎して、あなたが仕事をするかどうかにかかわらず、学生、c/vc/c++のプログラミングの経験があれば、来ましょう!158427611
unicodeファイルとは、ファイルヘッダに0 xFFFEが挿入されたフラグにほかならない.の読み書きの時に対応する読み書きでいいです.
私达のQQ群に参加することを歓迎して、あなたが仕事をするかどうかにかかわらず、学生、c/vc/c++のプログラミングの経験があれば、来ましょう!158427611
unicodeファイルとは、ファイルヘッダに0 xFFFEが挿入されたフラグにほかならない.の読み書きの時に対応する読み書きでいいです.
namespace fileStream
{
bool readFile_Unicode( const string &file ,wstring &destWstring)
{
destWstring.clear();
//setlocale(LC_ALL,"Chinese-simplified");//
locale &loc=locale::global(locale(locale(),"",LC_CTYPE));
std::ifstream filestream (file.c_str(), std::ios::in|std::ios::binary|std::ios::ate);
filestream.seekg (0, std::ios::end);
size_t size = (size_t)filestream.tellg();
filestream.seekg(0,ios::beg);
char* buffer = new char[size + 1];
memset(buffer,0,sizeof(char)*(size + 1));
filestream.read (buffer, size);
destWstring = (wchar_t*)buffer;
destWstring.erase(size/2);// /2 unicode
filestream.close();
delete[] buffer;
//setlocale(LC_ALL,"C");//
locale::global(loc);
return !destWstring.empty();
}
bool writeFile_Unicode( const string &file ,const wstring &writeWstring )
{
//setlocale(LC_ALL,"Chinese-simplified");//
locale &loc=locale::global(locale(locale(),"",LC_CTYPE));
std::ofstream filestream(file.c_str(), std::ios::out | std::ios::binary | std::ios::ate);
filestream.clear();
static const BYTE unicodeHead[]={0xFF,0xFE}; //unicode
filestream.write((char *)unicodeHead,2);
filestream.seekp(std::ios::end);
filestream.write((char *)writeWstring.c_str(),writeWstring.length() * 2);
filestream.close();
//setlocale(LC_ALL,"C");//
locale::global(loc);
return true;
}
}
私达のQQ群に参加することを歓迎して、あなたが仕事をするかどうかにかかわらず、学生、c/vc/c++のプログラミングの経験があれば、来ましょう!158427611