【发布时间】:2012-07-23 08:21:24
【问题描述】:
我对 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>
【问题讨论】:
-
一旦您知道输入的编码是什么,cppreference 中的一些示例可能会有所帮助,例如here
-
我刚刚编辑并扩展了我的问题。我不明白为什么(几乎)相同的代码与另一个输入一起工作。
-
通常
std::cout << "öäü" << std::endl;也不起作用。