C++ - 如何使用 C++ 读取 Unicode 字符(例如印地语脚本),或者是否有通过其他编程语言更好的方法?

2024-04-01

我有一个像这样的印地语脚本文件:

3.  भारत का इतिहास काफी समृद्ध एवं विस्तृत है।

我必须编写一个程序,为每个句子中的每个单词添加一个位置。 因此,特定单词位置的每一行的编号应以括号中的 1 开头。输出应该是这样的。

3.  भारत(1) का(2) इतिहास(3) काफी(4) समृद्ध(5) एवं(6) विस्तृत(7) है(8) ।(9)

上面这句话的意思是:

3.  India has a long and rich history.

如果您观察到“।”(印地语中的句号相当于英语中的“.”)也有一个单词位置,并且类似的其他特殊符号也会有,因为我正在尝试进行英语-印地语单词对齐(自然语言处理(NLP)的一部分)所以英文句号为“.”应该映射到“।”印地语。序列号保持不变。 我认为逐字阅读可能是一个解决方案。我怎样才能做到这一点?

问题是我能够使用 C++ 获取英语文本的单词位置,因为我能够使用 C++ 中的 ASCII 值逐个字符地读取单词位置,但我不知道如何对印地文文本进行同样的处理。

所有这一切的最终目的是查看英语文本的哪个单词位置映射到印地语中的哪个位置。这样我就可以实现双向对齐。

感谢您的时间...:)


哇,已经有 6 个答案了,但没有一个答案真正做到了这一点mgj通缉。jkp很接近,但随后删除了 daṇḍa,导致球落下。

Perl 来救援。更少的代码,更少的错误。

use utf8; use strict; use warnings;
use Encode qw(decode);
my $index;
join ' ', map { $index++; "$_($index)" } split /\s+|(?=।)/, decode 'UTF-8', <>;
# returns भारत(1) का(2) इतिहास(3) काफी(4) समदध(5) एव(6) विसतत(7) ह(8) ।(9)

编辑:更改为读取STDIN根据评论,添加了最佳实践实用程序

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ - 如何使用 C++ 读取 Unicode 字符(例如印地语脚本),或者是否有通过其他编程语言更好的方法? 的相关文章

随机推荐