text
text copied to clipboard
help - choosing encoder at runtime
Hello, This is not an issue - at least not for ztd libraries but for me - . I need help choosing the encoder (by encoder I mean like ztd::text::windows_1254) at runtime. Is there a base class for all types of encoders that I can use? or what logic should I follow to create necessary encoder object according to runtime information? I am using cpp17 Below code not compiling but gives the idea what I am trying to do.
#include <iostream>
#include "ztd/text.hpp"
enum class cEncoding
{
e_win_1251 = 0,
e_win_1252,
e_win_1254,
e_iso_8859_1,
e_iso_8859_2,
e_utf8
};
auto GetTextEncoder(cEncoding anEnc)
{
// void* back;
switch (anEnc)
{
case cEncoding::e_win_1251:
{
//back = new ztd::text::basic_windows_1251<char>();
return ztd::text::windows_1251;
}
case cEncoding::e_win_1252:
{
return ztd::text::windows_1252;
}
case cEncoding::e_win_1254:
{
return ztd::text::windows_1254;
}
default:
{
return ztd::text::compat_utf8;
}
}
}
int main()
{
std::cout << " basliyor" << std::endl;
std::string back;
std::string trstr{ "\xDC,\xDD,\xDE,\xE7,\xFC,\xFD,\xFE,\xD0,\xF0" }; // ÜİŞçışĞğ win1254
back = ztd::text::transcode(trstr, GetTextEncoder(cEncoding::e_win_1254), ztd::text::compat_utf8);
for (auto& c : back)
{
std::cout << std::hex << "0x" << (int)c << "\n";
}
std::cout << std::endl;
return 0;
}