我收到一个文本文件,每行包含几个字符。我必须逐行阅读,并在每个角色上应用词法分析器。然后,我将我的分析写在另一个文件中。
使用以下代码,我可以轻松阅读法语口音,但我意识到角色' ... '(这是一个不是3个点的字符)进入'& '。
注意:我的词法分析器必须使用字符串,这就是我将wstring转换回字符串的原因。
wfstream SourceFile;
ofstream ResultFile (ResultFileName);
locale utf8_locale(std::locale(), new codecvt_utf8<wchar_t>);
SourceFile.imbue(utf8_locale);
SourceFile.open(SourceFileName);
while(getline(SourceFile, wLineBuffer))
{
string LineBuffer( wLineBuffer.begin(), wLineBuffer.end() );
...
编辑:Raymond Chen认为由于我从wstring转换为字符串,该字符丢失了。 所以新问题现在是:如何在不转换字符的情况下将wstring转换为字符串?
编辑:文件样本
"stringééé"
"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
Identificateur1
Identificateur2
// Commentaire22
/**/
/*
Autre commentaire
…
*/
答案 0 :(得分:4)
您需要一个合适的Unicode支持库。忘记使用破坏的标准函数。它们不是为支持Unicode而设计的,不支持Unicode,也不能扩展以支持它。考虑使用ICU或Boost.Locale或类似的东西。