2010-02-26 88 views
7

我得到我的程序這些錯誤粘貼後在一些代碼:流浪「 342」在C++程序

showdata.cpp:66: error: stray ‘\342’ in program 
showdata.cpp:66: error: stray ‘\200’ in program 
showdata.cpp:66: error: stray ‘\235’ in program 
showdata.cpp:66: error: stray ‘\’ in program 
showdata.cpp:66: error: stray ‘\342’ in program 
showdata.cpp:66: error: stray ‘\200’ in program 
showdata.cpp:66: error: stray ‘\235’ in program 
showdata.cpp:67: error: stray ‘\342’ in program 
showdata.cpp:67: error: stray ‘\200’ in program 
showdata.cpp:67: error: stray ‘\235’ in program 
showdata.cpp:67: error: stray ‘\’ in program 
showdata.cpp:67: error: stray ‘\342’ in program 
showdata.cpp:67: error: stray ‘\200’ in program 
showdata.cpp:67: error: stray ‘\235’ in program 

下面是導致此錯誤的兩行。

size_t startpos = str.find_first_not_of(」 \t」); 
    size_t endpos = str.find_last_not_of(」 \t」); 

如何解決這個問題?

回答

32

符號不是"。這些被稱爲「聰明報價」,通常在豐富的文檔或博客中找到。

+4

我認爲有人使用Word作爲IDE;) – leppie 2010-02-26 10:48:23

+7

或從博客複製粘貼代碼。無論如何,這不是我們批評的地方。 – LiraNuna 2010-02-26 10:59:12

+3

從O'Reilly的PDF複製代碼時也會發生這種情況 – mrwalker 2011-01-28 14:50:35

6

線條

size_t startpos = str.find_first_not_of(」 \t」); 
size_t endpos = str.find_last_not_of(」 \t」); 

有一些 「特殊」 之類的雙引號,請嘗試以下操作:

size_t startpos = str.find_first_not_of(" \t"); 
size_t endpos = str.find_last_not_of(" \t"); 
0

可以使用sed命令來解決這些問題。

這會給你快速預覽將被替換的內容。

sed s/[」「]/'"'/g File.txt

這將完成替換,並把替換一個名爲WithoutSmartQuotes.txt新文件。

sed s/[」「]/'"'/g File.txt > WithoutSmartQuotes.txt

這將覆蓋原來的文件。

sed -i ".bk" s/[」「]/'"'/g File.txt

+0

我認爲你不應該在'-i'和'.bk'之間留有空格 - GNU sed(至少)會單獨解釋它們(即「沒有備份文件的就地」和一個語法錯誤的命令) 。 – 2017-03-01 17:37:29

0

值得一提的(對於誰該頁面就像我的土地),這類錯誤信息error: stray ‘\xyz’ in program可以與不被編譯器識別爲一個合法的任何其它字符或符號出現一。

分享我個人的經驗:

- bool less<const char∗>(const char∗ a, const char∗ b) 
- bool less<const char*>(const char* a, const char* b) 

前者是複製粘貼從PDF文件。 它不編譯。

後面的一個按預期編譯。