如果您将精确给定的代码剪切并粘贴到Visual Studio中(一个默认代码页1252 - 如果您在另一个代码页上,它可能更容易)并尝试保存它,我会得到一个线索:
此文件中的某些Unicode字符无法保存在当前代码页中。
所以,文件本身明显存在一些问题。另外一个线索是,虽然第一个#include
在Visual Studio中(和在堆栈溢出代码片段中)正确显示颜色,但第二个不是。这似乎表明,尽管视觉工作室似乎没问题,但它本身仍然无法解释这条线。
这种事情通常是由“搞笑”的Unicode代码点,如不破或零宽度的空间,或字符看起来像普通拉丁文的人,但实际上可能是希腊人或存在而引起西里尔文(或其他)。
所以,复制该行到a page that interprets Unicode strings变成了下面的代码点:
0023 NUMBER SIGN
200E * LEFT-TO-RIGHT MARK
0069 LATIN SMALL LETTER I
006E LATIN SMALL LETTER N
0063 LATIN SMALL LETTER C
006C LATIN SMALL LETTER L
0075 LATIN SMALL LETTER U
0064 LATIN SMALL LETTER D
0065 LATIN SMALL LETTER E
202C * POP DIRECTIONAL FORMATTING
0020 SPACE
003C LESS-THAN SIGN
0066 LATIN SMALL LETTER F
0073 LATIN SMALL LETTER S
0074 LATIN SMALL LETTER T
0072 LATIN SMALL LETTER R
0065 LATIN SMALL LETTER E
0061 LATIN SMALL LETTER A
006D LATIN SMALL LETTER M
003E GREATER-THAN SIGN
我用星号标记∗
有问题的代码点,使其更清晰发生了什么。这很像这条线是从一个网页中复制粘贴的,这个网页中有定向格式化控制字符。
因此,行本身正在导致你看到的编码错误。 其他错误(不完整类型)无疑是由于第一个错误阻止了实际包含fstream
标头的事实造成的。
解决方案非常简单,只需重新输入当前行下方的行并删除原始行。
奖金因果报应的人谁可以找到复活节彩蛋在上面的帖子:-)
还有一个缺失的头。 –
和好的Unicode星号 –
@LightnessRacesinOrbit获奖。我认为这会比这更难。或许我不如我想象的那么聪明:-) – paxdiablo