【问题标题】:Error: stray ‘\342’ in my program, but I can't find the bad character [closed]错误:在我的程序中出现“\342”,但我找不到坏字符 [关闭]
【发布时间】:2017-09-19 14:31:38
【问题描述】:

我在尝试编译我的 C++ 程序时得到了这个

error: stray ‘\342’ in program
���func("a","b",3,0);
^

但是当我从 Atom(我使用的文本编辑器)粘贴时,我得到了这个 ⁠⁠⁠⁠

  func("a","b",3,0);

我需要补充一点,我是从WhatsApp web 粘贴的,有 40 行这样的代码需要很长时间才能重写。我想知道坏角色是什么以及在哪里。

更多代码:

  func("a","b",3,0);
  func("c","d",1,3);

【问题讨论】:

  • 谷歌搜索错误消息让我找到了一个很好的来源,说聪明的引号是罪魁祸首。我几乎没有时间检查 3 个来源。
  • 在我的情况下,错误的引号不是问题,您几乎不需要任何时间来检查我的代码并查看我使用的引号类型是否正确(我在发布此之前花了一些时间谷歌搜索大多数人都使用这些引号“”而不是这些“”,我的键盘甚至不能做出那种错误的引号)
  • 顺便说一下,左智能“双”引号的 UTF-8 表示是 11100010 10000000 10011100。注意第一个八位字节如何与八进制 342 完全匹配。编译器很可能还为其他两个八位字节发出错误:\200 和 \234。无论哪种方式,如果没有minimal reproducible example,就很难判断,最好是带有一个在线编译器的链接来重现错误。
  • 我还可以告诉你,我的 IDE 确认我使用了正确的引号(如果我通过复制粘贴搜索它们,它会找到我使用过的每一个“双”引号,而其他引号是不要给我错误)
  • 无论如何,查看您的问题并做出判断并不容易,因为您发布的代码中唯一的非 ASCII 范围字符是 �s。 in 代码中没有任何内容我可以实际复制以找出它真正是哪个字符,因为您粘贴的所有字节都不匹配 \342 字节,更不用说其余可能的 UTF- 8个字符。更简洁地说,问题中的代码不会产生这个错误。

标签: c++ linux g++ whatsapp


【解决方案1】:

您正在自己回答您的问题。该错误向您显示,前 3 个空格导致了问题。要解决此问题,请尝试使用正则表达式或“搜索和替换”功能将“错误”的空格替换为正确的空格。

【讨论】:

  • 空格怎么可能是“错误的”,空格不应该都是一样的吗?如何用正确的空格替换错误的空格?
  • 而且我还删除了该行之前的所有空格,并且(使用 VSCode,因为它使用空格而不是 TAB 字符)替换了所有空格,编译器仍然给出相同的输出
  • 现在,每行之前没有空格,我仍然得到相同的输出
  • 使用非 Unicode 编辑器,删除并重新键入该行。如果奇怪的 unicode 字符进入您的文件,则错误可能在前一行。
  • @carzacc 请注意 Richard 的评论。也许错误在前一行。如果您还删除了那里的空格,您应该使用新的错误消息更新您的帖子。也许还有其他问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-02
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
  • 1970-01-01
  • 2013-09-28
  • 2023-03-20
相关资源
最近更新 更多