当此行不在评论中时:
double random_seed, participation_fee, ticket_revenue;
编译器会产生以下错误:
main.cpp:24:2: error: stray ‘\200’ in program
main.cpp:24:2: error: stray ‘\254’ in program
main.cpp:24:2: error: stray ‘\342’ in program
main.cpp:24:2: error: stray ‘\200’ in program
main.cpp:24:2: error: stray ‘\254’ in program
我已经尝试重新输入此行。我使用Sublime作为文本编辑器。如何解决这个问题?
这是整个功能:
void starting_game(vector<int>&players, vector<Player*> player_obj)
{
int id, x, y, number=0;
char pos;
double random_seed,participation_fee,ticket_revenue;
string input;
cin >> number;
for(int i = 0; i < number; i++)
{
cin >> id;
cin.ignore(4,' ');
cin >> x;
cin.ignore(2,':');
cin >> y;
cin.ignore(2,':');
cin >> pos;
players.push_back(find_put(id, player_obj, x, y, pos));
}
//cin>>random_seed;//>>participation_fee>>ticket_revenue;
}
答案 0 :(得分:2)
你的代码中有不可见的字符会阻止编译器正常工作,因为它无法处理它们。
在您的特定情况下,其中一个字符是U + 202c,使用UTF-8编码。它被称为&#34; POP DIRECTIONAL FORMATTING&#34;,并且是不可见的。
隐形,修复这个很难。甚至问题中的代码都包含该字符。
要解决此问题,您可以执行以下某些操作:
尝试删除整行以及下一行,然后重新键入文本。在您的特定情况下,字符会留在行尾,如果您只是删除内容行并重新键入它,则可能会保留这些字符,而不会删除换行符。 (通过@PatrickTrentin)
使用删除所有非ascii字符的脚本。这很容易用python完成。将以下代码粘贴到名为script.py
的文本文件中,然后使用python3
执行它。
#!/usr/bin/python3
import argparse
import sys
parser = argparse.ArgumentParser()
parser.add_argument("infile", type=argparse.FileType("rb"))
parser.add_argument("outfile", type=argparse.FileType("wb"))
args = parser.parse_args()
with args.infile as inf:
intext = inf.read().decode("utf-8")
with args.outfile as outf:
outf.write("".join(
c for c in intext
if ord(c) <= 127
).encode("utf-8"))
用法为python3 script.py input output
。 不两次输入相同的名称,它将无效,您最终将使用空文件。在任何情况下,请在尝试之前备份文件!
使用十六进制编辑器手动删除所有非ASCII字符。不幸的是,我不认识任何易于使用的人。
在这种情况下,删除没有替换的字符是正确的做法。在其他情况下(例如proposed duplicate),用更合适的东西替换有问题的字符更为正确。这不是这种情况。