我得到一个文本文件,每行包含几个字符。我必须逐行阅读它,并对每个字符应用词法分析器。然后,我将分析结果写入另一个文件中。

使用以下代码,我可以很容易地阅读法语口音,但是我意识到字符“…”(这是一个字符而不是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转换为string,所以该字符丢失了。
因此,现在的新问题是:如何从wstring转换为字符串而不转换字符?

编辑:文件样本

"stringééé"
"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
Identificateur1
Identificateur2
// Commentaire22
/**/
/*
Autre commentaire
…
*/

最佳答案

您需要适当的Unicode支持库。忘记使用损坏的标准功能。它们不是设计为支持Unicode的,不支持Unicode的,因此不能进行扩展以正确支持它。考虑使用ICU或Boost.Locale或类似的东西。

关于c++ - 如何从文本文件中读取…字符和法语口音,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21260625/

10-11 19:59
查看更多