我在 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>