繁体   English   中英

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

[英]Recognizing lithuanian letters from fstream in C++

我的IT老师有一项任务,要找出给定文本中有多少个字母,数字,空格和其他符号。 问题在于文本是用立陶宛字母(Š,š,Ę,ę,Ų,ų等)编写的,我不知道如何在C ++中识别它们。 为了计算每种类型的符号的计数,我使用getline()函数逐行从fstream读取文本到string ,然后遍历字符串,比较每个字符与其文字,例如(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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM