Распознавание тамильской строки и обработка ее с использованием c или c ++ и использование юникода - PullRequest
0 голосов
/ 03 сентября 2011

Ввод данных осуществляется на языке с использованием сценария, отличного от латинского алфавита. Программа на c или c ++ должна их распознавать.

Как мне взять ввод на тамильском языке и разделить его на буквы, чтобы я мог распознать каждый тамильский алфавит?

как мне использовать wchar_t и locale?

Ответы [ 3 ]

0 голосов
/ 03 сентября 2011

Включая и используя WinAPI и windows.h позволяет вам использовать Unicode, но только в программах Win32.

0 голосов
/ 03 сентября 2011

Смотрите здесь для моей предыдущей напыщенной речи на эту тему.

Предполагая, что ваша платформа способна обрабатывать тамильские символы, я предлагаю следующую последовательность событий:

I. Получить входную строку в широкую строку:

#include <clocale>

int main()
{
  setlocale(LC_CTYPE, "");
  const char * s = getInputString(); // e.g. from the command line

  const size_t wl = mbstowcs(NULL, s, 0);
  wchar_t * ws = new wchar_t[wl];
  mbstowcs(ws, s, wl);
  //...

II. Преобразуйте широкую строку в строку с определенной кодировкой:

#include <iconv.h>

// ...

iconv_t cd = iconv_open("UTF32", "WCHAR_T");
size_t iin = wl;
size_t iout = 2 * wl; // random safety margin
uint32_t * us = new uint32_t[iout];
iconv(cd, reinterpret_cast<char*>(ws), &iin, reinterpret_cast<char*>(us), &iout);
iconv_close(cd);

// ...

Наконец, у вас есть us массив кодовых точек Unicode, которые составили ваш вводимый текст. Теперь вы можете обработать этот массив, например, просматривая каждую кодовую точку в списке и проверяя, происходит ли она из тамильского сценария, и делайте с ней все, что считаете нужным.

0 голосов
/ 03 сентября 2011

Стандартные библиотеки C ++ не поддерживают полностью Unicode, как и C; вам лучше использовать библиотеку типа Boost , которая является кроссплатформенной

...