2012-04-11 8 views
0
string word1 = "misisipi"; 
string word2 = "mississippi"; 

Ich möchte diese Strings einige wie "vergleichen" und Briefe, die nicht üblich sind "auswerfen". Zum Beispiel word2 würde auf "misisipi" reduziert werden, achten Sie darauf, die 'S'es in der richtigen Reihenfolge zu halten, und word1 würde nicht ändern, da alle seine Zeichen in word2 sind. Ich erkenne, wie man ein Element in einer Zeichenkette entfernt, aber dieses Mal möchte ich die Reihenfolge beibehalten. Zum Beispiel, wenn ich tat nicht die Reihenfolge zu halten, nach dem Vergleich word2 wäre "missipi", was ist nicht was ich will.Entfernen von Zeichen, die im Vergleich von zwei Strings ungewöhnlich sind

+4

Bitte posten Sie den Code, den Sie versucht haben, der fast funktioniert. –

Antwort

0

Versuchen Sie, die gültigen word2 Zeichen in word1 zu kopieren, während Sie jedes Element von word1 durchlaufen.

std::string temp; 
std::string::iterator w2 = word2.begin(); 

for(std::string::iterator w1 = word1.begin(); w1 != word1.end(); ++w1) 
{ 
    for(; w2 != word2.end(); ++w2) // Move through word2... 
    { 
     if(*w1 == *w2) // Copy the character into temp when found. 
     { 
      temp += *w2; 
      break; 
     } 
    } 
} 

std::cout << temp << std::endl; 

möchten temp vorher zuweisen, wenn Sie Geschwindigkeit wollen.

+0

Vielen Dank für Ihre Hilfe! –

Verwandte Themen