在C++中识别fstream中的立陶宛字母

Recognizing lithuanian letters from fstream in C++

本文关键字:立陶宛 fstream C++ 识别      更新时间:2023-10-16

我从IT老师那里得到了一项任务,要找出给定文本中有多少字母、数字、空格和其他符号。问题是,文本是用立陶宛字母写的(Š,š,Ę,É,Ų,\等),我不知道如何在C++中识别它们。为了计算每种类型的符号的计数,我用getline()函数逐行读取文本,从fstreamstring,然后在字符串中迭代,将每个字符与其文字进行比较,例如(c >= 'A' && c <= 'Z')表示它是大写字母,但它不适用于立陶宛字符。我想文本文件是以Unicode格式保存的。请帮我辨认课文中的立陶宛字母。

我认为你可能必须打开你的二进制文件,比如(fileName,ios:in|ios:binary);并逐字节读取文件

据我所知,您的文本存储在utf-8编码中。如果是utf-16或utf-32,那么您的getline()函数几乎总是返回一个或零个符号,我想您会注意到这一点。UTF-8描述如下:https://ru.wikipedia.org/wiki/UTF-8.您可以使用standart库将utf-8字符串转换为wstring:UTF8到STL中的宽字符转换。然后您可以使用map<wchar,int>来计算不同符号的计数。

我不得不管理utf8,最终使用了utf8 cpp

对于所有实用的utf8相关问题,我建议阅读以下内容:

utf8无处不在