【发布时间】: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个字符。更简洁地说,问题中的代码不会产生这个错误。