#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ofstream buckyFile;
buckyFile.open("tuna.txt");
buckyFile << "Test";
}
运行之后,我得到“编码错误”和“聚合'std :: ofstream buckyFile'的类型不完整,无法定义|”。
这是我第一次在代码块中使用文件,所以不要评判我。我一直在寻找在线解决方案,但我找不到。 请帮忙
答案 0 :(得分:3)
如果你将确切的给定代码剪切并粘贴到Visual Studio中(一个默认代码页1252 - 如果你在另一个代码页上,它可能更宽容)并尝试保存它,你&#39;我得到一个线索:
此文件中的某些Unicode字符无法保存在当前代码页中。
因此,文件本身显然存在导致问题的原因。另一个线索是,虽然第一个#include
在Visual Studio(以及Stack Overflow代码段)中正确地进行了颜色渲染,但第二个却没有。这似乎表明Visual Studio本身在解释该行时遇到了麻烦,尽管看起来没什么问题。
这种事情通常是由于&#34;搞笑&#34; 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
标头这一事实造成的。
解决方案非常简单,只需重新键入当前行下的行并删除原始行。
在任何可以在上述帖子中找到复活节彩蛋的人获得业力奖励: - )