Verdwaalde ‘\342’ in C++-programma

Ik krijg deze fouten in mijn programma nadat ik wat code heb geplakt:

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

Dit zijn de twee regels die de fouten veroorzaken.

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

Hoe kan ik dit oplossen?


Antwoord 1, autoriteit 100%

Het symbool is niet ". Dat worden ‘slimme aanhalingstekens’ genoemd en zijn meestal te vinden in uitgebreide documenten of blogs.


Antwoord 2, autoriteit 13%

De lijnen

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

heb wat “speciaal” soort dubbele aanhalingstekens, probeer het volgende:

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

Antwoord 3, autoriteit 7%

Dit soort foutmelding, error: stray ‘\xyz’ in program, kan verschijnen met elk ander teken of symbool dat door de compiler niet als legaal wordt herkend.

Mijn persoonlijke ervaring delen:

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

De eerste is gekopieerd en geplakt vanuit een pdf-bestand. Het compileert niet.

De laatste compileert zoals verwacht.


Antwoord 4

U kunt de opdracht sed gebruiken om deze problemen op te lossen.

Dit geeft je een snel voorbeeld van wat er zal worden vervangen.

sed s/[”“]/'"'/g File.txt

Hiermee worden de vervangingen uitgevoerd en wordt de vervanging in een nieuw bestand met de naam WithoutSmartQuotes.txt geplaatst.

sed s/[”“]/'"'/g File.txt > WithoutSmartQuotes.txt

Hiermee wordt het originele bestand overschreven.

sed -i ".bk" s/[”“]/'"'/g File.txt

LEAVE A REPLY

Please enter your comment!
Please enter your name here

5 × one =

Other episodes