Сначала я разработал независимую платформенную библиотеку, используя ANSI C (не C ++ и любые нестандартные библиотеки, такие как MS CRT или glibc, ...).
После нескольких поисков я обнаружил, что одним из лучших способов интернационализации в ANSI C является использование кодировки UTF-8.
В utf-8:
Но у меня возникают некоторые проблемы, когда я хочу получить произвольный доступ к элементам (символы) строки utf-8.
В кодировке ASCII:
char get_char(char* assci_str, int n)
{
// It is very FAST.
return assci_str[n];
}
В кодировке UTF-16/32:
wchar_t get_char(wchar_t* wstr, int n)
{
// It is very FAST.
return wstr[n];
}
И вот моя проблема в кодировке UTF-8:
// What is the return type?
// Because sizeof(utf-8 char) is 8 or 16 or 24 or 32.
/*?*/ get_char(char* utf8str, int n)
{
// I can found Nth character of string by using for.
// But it is too slow.
// What is the best way?
}
Спасибо.