C++ 如何阅读…;文本文件中的字符和法语重音

C++ 如何阅读…;文本文件中的字符和法语重音,c++,filestream,C++,Filestream,我得到一个文本文件,每行包含一对字符。我必须逐行阅读,并对每个字符应用词法分析器。然后,我将我的分析写在另一个文件中 使用下面的代码,我阅读法语口音没有问题,但我意识到字符“…”(这是一个字符而不是3个点)变成了“&” 注意:我的词法分析器必须使用字符串,这就是我将wstring转换回字符串的原因 wfstream SourceFile; ofstream ResultFile (ResultFileName); locale utf8_locale(std::locale(), new co

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

使用下面的代码,我阅读法语口音没有问题,但我意识到字符“”(这是一个字符而不是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() );

...

您需要一个合适的Unicode支持库。忘记使用坏掉的标准函数。它们不是为支持Unicode而设计的,不支持Unicode,并且无法扩展以正确支持它。考虑使用ICU或Boost.Locale之类的工具。

您需要一个合适的Unicode支持库。忘记使用坏掉的标准函数。它们不是为支持Unicode而设计的,不支持Unicode,并且无法扩展以正确支持它。考虑使用ICU或Boost.Locale或类似的东西。

你确定你收到的文本文件是UTF-8吗?省略号是否在
getline
或从
wstring
转换为
string
时丢失了?@diiertrosset是的,当我用notepad2打开它时,我转到编码,它说utf-8。使用std::codevt_utf8有点危险。你在读什么(什么编码),您正在使用什么来报告“&”?
std::string
是一个字节序列,因此它可以表示您选择将其解释为的任何内容。您确定给定的文本文件是UTF-8吗?
getline
或从
wstring
转换为时省略号丢失了吗
string
?@DidierTrosset是的,当我用notepad2打开它时,我转到encoding,它显示utf-8。使用
std::codecvt_utf8
有点危险。你在读什么(什么编码),你在用什么来报告一个“&”?
std::string
是一个字节序列,因此它可以表示你选择解释为什么。
"stringééé"
"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
Identificateur1
Identificateur2
// Commentaire22
/**/
/*
Autre commentaire
…
*/