text icon indicating copy to clipboard operation
text copied to clipboard

help - choosing encoder at runtime

Open loupus opened this issue 1 year ago • 0 comments

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;

}

loupus avatar Jun 27 '24 15:06 loupus