2015-07-11 12:27:22 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <fstream>
|
|
|
|
|
|
|
|
namespace utf8 {
|
|
|
|
#ifdef _WIN32
|
|
|
|
class utf8
|
|
|
|
{
|
|
|
|
public:
|
2015-07-11 14:01:06 +00:00
|
|
|
static std::wstring decode(const std::string &str);
|
|
|
|
static std::string encode(const std::wstring &wstr);
|
2015-07-11 12:27:22 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class ifstream : public std::ifstream
|
|
|
|
{
|
|
|
|
public:
|
2015-07-11 14:01:06 +00:00
|
|
|
ifstream(const std::string& _Str, ios_base::openmode _Mode = ios_base::in, int _Prot = (int)ios_base::_Openprot) : std::ifstream(utf8::decode(_Str), _Mode, _Prot) { }
|
|
|
|
ifstream() : std::ifstream() { }
|
|
|
|
void open(const std::string& _Str, ios_base::openmode _Mode = ios_base::in, int _Prot = (int)ios_base::_Openprot) { std::ifstream::open(utf8::decode(_Str), _Mode, _Prot); }
|
2015-07-11 12:27:22 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class ofstream : public std::ofstream
|
|
|
|
{
|
|
|
|
public:
|
2015-07-11 14:01:06 +00:00
|
|
|
ofstream(const std::string& _Str, ios_base::openmode _Mode = ios_base::in, int _Prot = (int)ios_base::_Openprot) : std::ofstream(utf8::decode(_Str), _Mode, _Prot) { }
|
|
|
|
ofstream() : std::ofstream() { }
|
|
|
|
void open(const std::string& _Str, ios_base::openmode _Mode = ios_base::in, int _Prot = (int)ios_base::_Openprot) { std::ofstream::open(utf8::decode(_Str), _Mode, _Prot); }
|
2015-07-11 12:27:22 +00:00
|
|
|
};
|
|
|
|
#else
|
|
|
|
using std::ifstream;
|
|
|
|
using std::ofstream;
|
|
|
|
#endif
|
|
|
|
}
|