识别泰米尔语字符串并使用 c 或 c++ 处理它们以及unicode的使用

发布于 2024-12-02 23:10:40 字数 115 浏览 1 评论 0原文

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

我如何接受泰米尔语输入并将其拆分为字母,以便我可以识别每个泰米尔字母?

如何使用 wchar_t 和区域设置?

The input is given in a language with a script other than the roman alphabets.A program in c or c++ must recognize them..

How do i take input in Tamil and split it into letters so that i can recognize each Tamil alphabet?

how do i use wchar_t and locale?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

海拔太高太耀眼 2024-12-09 23:10:40

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

The C++ standard libraries do not handle Unicode completely, neither does C; you'd be better off using a library like Boost, which is cross platform

极度宠爱 2024-12-09 23:10:40

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

Including and using WinAPI and windows.h allow's you to use Unicode, but only on Win32 programs.

烟花易冷人易散 2024-12-09 23:10:40

请参阅此处,了解我之前关于此主题的咆哮。

假设您的平台能够处理泰米尔语字符,我建议执行以下事件序列:

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 代码点数组。您现在可以处理这个数组,例如,通过在列表中查找每个代码点并检查它是否来自泰米尔语脚本,并对其进行任何您认为合适的操作。

See here for a previous rant of mine on this subject.

Assuming that your platform is capable of handling Tamil characters, I suggest the following sequence of events:

I. Get the input string into a wide string:

#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. Convert the wide string into a string with definite encoding:

#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);

// ...

Finally, you have in us an array of Unicode codepoints that made up your input text. You can now process this array, e.g. by looking each codepoint up in a list and checking whether it comes from the Tamil script, and do with it whatever you see fit.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文