c++ 声明变量时编译器错误-八进制序列200 254 342 [重复]

icnyk63a  于 2023-05-02  发布在  其他
关注(0)|答案(1)|浏览(154)

此问题已在此处有答案

C compile errors: stray '\200' in program and expected ')' before numeric constant(4个答案)
7年前关闭。
当这一行不在注解中时:

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 Text作为文本编辑器。如何解决此问题?
这是整个函数:

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;‬‬
}
pgky5nke

pgky5nke1#

你的代码中有不可见的字符,这些字符会阻止编译器正常工作,因为它无法处理它们。
在您的特定情况下,其中一个字符是U+202 c,使用UTF-8编码。它被称为“POP定向格式化”,并且是不可见的。
作为隐形人,解决这个问题很难。甚至问题中的代码也包含该字符。
要修复它,您可以执行以下操作:

  • 尝试删除整行以及下一行,然后重新键入文本。在您的特定情况下,字符停留在行尾,如果您简单地擦除 contents 行并重新键入它,而不同时杀死换行符,则可能会保留这些字符。(via @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),用更合适的字符替换违规字符会更正确。这不是我们的问题。

相关问题