2016-04-27 5 views
0

hat hat folgenden CodeFinding Zeichenfolge, wenn Suchbegriff White Spaces

std::string str = "stack overflow=Ask Questions"; 
size_t pos = str.find("stack overflow"); 

if(pos != string::npos) 
cout << "found" << endl; //works as expected 

size_t pos1 = str.find("stack Notflow"); 
if(pos1 != string::npos) 
cout << "found" << endl; //this is printed 
else 
cout << "NOt found" << endl; 

In obigem Code wie "Stack Notflow" gefunden wird? Wie kann ich es korrigieren lassen?

+5

funktioniert gut für mich. http://coliru.stacked-crooked.com/a/01e560e605bfacbe – DeiDei

+2

[konnte nicht reproduzieren] (https://ideone.com/TijiCF). Bitte geben Sie [MCVE] (http://stackoverflow.com/help/mcve) an. – MikeCAT

Antwort

2

Sie testen basierend auf pos wheras pos1 speichert das Ergebnis von str.find("stack Notflow") entweder verwenden

pos = str.find("stack Notflow"); oder

if(pos1 != string::npos)

für die Linie size_t pos1 = str.find("stack Notflow");

oder einen danach.

EDIT Ihre bearbeitete Version funktioniert perfekt (zumindest, wenn ich es getestet)

+2

Wenn die ursprüngliche Version diesen Fehler enthielt, sollte ein Rollback durchgeführt werden. Aus irgendeinem Grund sehe ich nicht, dass die Frage bearbeitet wurde. – user463035818

+2

@ tobi303 Ich schwöre es ... seltsam ... – Isaac

+0

@ tobi303 Ich sah es auch, als ich genau den gleichen Fehler aufzeigen wollte, auf den Isaac in seiner Antwort hingewiesen hatte. – Unda