识别tamil字符串并使用c或c ++处理它们并使用unicode

时间:2011-09-03 17:37:09

标签: c++ c unicode locale

输入是用一种带有罗马字母以外的脚本的语言给出的.c或c ++中的程序必须识别它们。

我如何接受泰米尔语的输入并将其分成字母以便我能识别每个泰米尔语字母?

我如何使用wchar_t和locale?

3 个答案:

答案 0 :(得分:0)

C ++标准库不完全处理Unicode,C也不处理;你最好使用像Boost这样的跨平台库

答案 1 :(得分:0)

包含和使用WinAPI和windows.h允许您使用Unicode,但仅限于Win32程序。

答案 2 :(得分:0)

See here我之前对此主题的咆哮。

假设您的平台能够处理泰米尔语字符,我建议采用以下一系列事件:

予。将输入字符串转换为宽字符串:

#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代码点数组,构成您的输入文本。您现在可以处理此数组,例如通过在列表中查找每个代码点并检查它是否来自泰米尔语脚本,并且无论您认为合适,都可以使用它。