簡體   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