У меня есть рабочий алгоритм для преобразования строки UTF-8 в строку UTF-32, однако мне нужно выделить все пространство для моей строки UTF-32 заблаговременно. Есть ли способ узнать, сколько символов в UTF-32 будет содержать строка UTF-8.Преобразование UTF-8 в UTF-32, предварительное вычисление числа «символов» в каждом
Например, строка UTF-8 «¥ 0» - это 3 символа, а после преобразования в UTF-32 - 2 без знака. Есть ли способ узнать количество символов UTF-32, которые мне понадобятся перед выполнением преобразования? Или мне придется переписать алгоритм?
+1, один комментарий: После того, как вариант 2 вы можете 'realloc' массив UTF-32, если он был выделен с помощью' таНоса 'прежде. Таким образом, вы не теряете память, в идеале. – quinmars
@quinmars Правда. Независимо от того, что стоит делать, может зависеть от того, как долго вы намерены поддерживать строку utf32; если вы будете держать его на некоторое время, тогда стоит попытаться уменьшить его. Если вы собираетесь использовать его, а затем освободите его быстрее, то это может не стоить того. –
Я бы пошел с опцией №1 сам. Это немного больше кода и немного больше времени для запуска, но он имеет преимущество, позволяя первому проходу проверить вход, чтобы убедиться, что он действителен UTF-8 при подсчете, до этого выделяя любую память для второго прохода , –