在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无处不在
相关文章:
- 在fstream期间忽略空行
- 使用fstream对txt文件中的数字进行循环
- 为什么 fstream 在打开带有格式的文件时会导致分段错误?
- 无法打开 fstream C++文件,即使它与 .cpp 位于同一位置
- 使 std::fstream 写入文件末尾,但从头开始读取
- 为什么当我在 std::string 中打开文件名的 fstream 时出现"no matching function"错误?
- 自定义 std::fstream,std::filebuf 的溢出和下溢函数未为每个字符调用
- 如何修复函数中的 fstream 文件输入以将正确的信息存储在结构数组中?
- fstream / ifstream / ofstream 对象如何转换为布尔值
- 使用命令的未定义引用<fstream>
- 如何检查文件是否已存在于 fstream C++中
- 如何正确使用 fstream 并在 char 数组中传递数据?
- 如何使用 fstream 的 .get 字符串?
- 使用 fstream 库并在屏幕上打印的文件有问题?
- Windows std::fstream 修改文件后打开()?
- 如何删除文件中的数字,通过 c++ fstream 的
- std::fstream 在 MSVC 和 G++ 上使用 UTF-8 的不同行为
- C++ 错误检查 fstream open() 命令和一般字符串流错误处理
- 在istream_iterator中使用后的 C++ FSTREAM obj 回滚
- 在C++中识别fstream中的立陶宛字母