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

时间:2014-10-26 11:31:57

标签: c++ c++11 text unicode fstream

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

3 个答案:

答案 0 :(得分:0)

我想你可能要打开文件二进制文件,比如(fileName,ios :: in | ios :: binary); 并逐字节地读取文件

答案 1 :(得分:0)

据我所知,你的文字以utf-8编码存储。如果它是utf-16或utf-32 - 你的getline()函数几乎总会返回一个或零个符号,我想你会注意到这一点。这里描述的UTF-8:https://ru.wikipedia.org/wiki/UTF-8。您可以使用标准库将utf-8字符串转换为wstring:UTF8 to/from wide char conversion in STL。然后你可以使用map&lt; wchar,int&gt;计算不同符号的数量。

答案 2 :(得分:0)

我必须管理utf8并最终使用utf8-cpp

对于所有与utf8相关的实际问题,我建议您阅读:

utf8 everywhere