25 #ifndef DOZERG_CHARSET_CONVERT_H_20130513 26 #define DOZERG_CHARSET_CONVERT_H_20130513 30 #include "to_string.hh" 106 if(fromCode.empty() || toCode.empty())
111 case kIgnore:t +=
"//IGNORE";
break;
117 cv_ = ::iconv_open(t.c_str(), fromCode.c_str());
124 bool valid()
const{
return (iconv_t(-1) != cv_);}
136 const std::string
toCode()
const{
return to_;}
150 bool convert(
const std::string & source, std::string & dest){
155 ::iconv(cv_, NULL, NULL, NULL, NULL);
156 char * inbuf =
const_cast<char *
>(&source[0]);
157 size_t inLen = source.size();
158 for(
char buf[64];inLen > 0;){
159 const size_t inOld = inLen;
161 size_t outLen =
sizeof buf;
162 ::iconv(cv_, &inbuf, &inLen, &outbuf, &outLen);
166 assert(buf < outbuf);
167 dest.append(buf, outbuf - buf);
189 std::string from_, to_;
Definition: to_string.hh:43
Converting text between different character encodings.
Definition: charset_convert.hh:40
bool init(const std::string &fromCode, const std::string &toCode, EMode mode=kNormal)
Initialize a usable converter.
Definition: charset_convert.hh:103
Definition: charset_convert.hh:58
Definition: charset_convert.hh:63
bool valid() const
Test whether this object is initialized.
Definition: charset_convert.hh:124
bool convert(const std::string &source, std::string &dest)
Convert text from source encoding to destination encoding.
Definition: charset_convert.hh:150
Definition: charset_convert.hh:50
~CCharsetConvert()
Destructor for releasing resources.
Definition: charset_convert.hh:77
CCharsetConvert(const std::string &fromCode, const std::string &toCode, EMode mode=kNormal)
Construct a usable converter.
Definition: charset_convert.hh:88
const std::string fromCode() const
Get encoding name for source text.
Definition: charset_convert.hh:130
std::string toString() const
Get a readable description of this object.
Definition: charset_convert.hh:176
const std::string toCode() const
Get encoding name for destination text.
Definition: charset_convert.hh:136
EMode mode() const
Get conversion mode.
Definition: charset_convert.hh:142
EMode
Conversion mode.
Definition: charset_convert.hh:46
CCharsetConvert()
Construct a default object, with no ability for conversion.
Definition: charset_convert.hh:70