我遇到了“变音符号”(字母ä,ü,ö,...)和ifstream在C++中的问题。C++ ifstream和“变音符号”
我使用curl下载一个html页面,ifstream逐行读取下载的文件并解析一些数据。这远远直到我有类似下面的一个行:
te="Olimpija Laibach - Tromsö";
te="Burghausen - Münster";
我的代码分析这些线和输出如下所示:
Olimpija Laibach vs. Troms?
Burghausen vs. M?nster
之类的东西直接从代码工作输出变音:
cout << "öäü" << endl; // This works fine
我的代码看起来有点像这样:
ifstream fin("file");
while(!(fin.eof())) {
getline(fin, line, '\n');
int pos = line.find("te=");
if(pos >= 0) {
pos = line.find(" - ");
string team1 = line.substr(4,pos-4);
string team2 = line.substr(pos+3, line.length()-pos-6);
cout << team1 << " vs. " << team2 << endl;
}
}
编辑:奇怪的是,相同的代码(唯一改变的东西是源和分隔符)适用于另一个文本输入文件(相同的过程:用curl下载,用ifstream读取)。解析和输出线像下面这样是没有问题的:
<span id="...">Fernwärme Vienna</span>
看起来像一个编码问题 – SingerOfTheFall 2012-07-23 08:23:33
一旦你知道输入的编码是什么,一些cppreference的例子可能会有帮助, [here](http://en.cppreference.com/w/cpp/locale/codecvt#Example) – jogojapan 2012-07-23 08:25:04
[do(w)ifstream支持不同的编码](http:// stackoverflow。com/questions/1274910/do-wifstream-support-different-encodings) – jogojapan 2012-07-23 08:26:37