2016-05-15 8 views
0

Ich versuche, eine Sucharray-Funktion zu erstellen, wo ich eine Liste von Zeichenfolgen habe und ich eine Benutzereingabe nehme. Ich vergleiche dann die Benutzereingabe mit den Zeichenfolgen im Array und gebe jedes aus, das mit einer Zeichenfolge in genau der Reihenfolge der Eingabe übereinstimmt. Ich bin mir nicht sicher, wo ich anfangen soll. etwa so:C++ Wie kann ich eine Benutzereingabe mit einer String-Liste mit einer strikten Bestellung vergleichen?

Array: "this", "ist", "a", "test"

Eingang user: "t"

Die Ausgabe sollte dann "this" und "test" Diese

ist das, was ich bisher:

string arr[6] = {"hello", "this", "is", "a", "test", "string"}; 
vector<string> words; 
for (int i=0; i<5; i++) { 
    if (a.find(arr[i]) != string::npos) { 
     words.push_back(arr[i]); 
    } 
} 

for (int i=0; i<words.size(); i++) { 
    cout << words[i] << endl; 
} 

im Moment sucht es nur nach genauen Übereinstimmungen. Wie könnte ich es zu dem oben beschriebenen Szenario schaffen?

+0

Mit "vergleichen" und "Übereinstimmungen" meinen Sie, dass die gesuchte Zeichenfolge das Präfix des Array-Elements oder umgekehrt oder beides ist? – bipll

+1

_ "Ich bin mir nicht sicher, wo ich anfangen soll." _ Wahrscheinlich am besten, wenn Sie etwas Code eingeben und es versuchen. –

+1

Starten Sie einfach; komm zurück, wenn du auf etwas feststeckst. (Und bitte benutzen Sie 'std :: string', nicht' char * '.) –

Antwort

1

Ändern Sie diese

if (a.find(arr[i]) != string::npos) 

zu

if (arr[i].find(a) != string::npos) 

Sie ein Ihren Benutzer Zeichenfolge in der Liste der Zeichenketten suchen einzeln.

+0

danke, das hat funktioniert – nanjero05

0

Es gibt einen logischen Fehler in dem Code, den Sie hier gepostet haben: if (a.find(arr[i]) != string::npos) {. Er sucht die Eingabezeichenfolge für die Wörter im Array, aber Sie möchten die Eingabezeichenfolge in den Wörtern des Arrays finden (soweit I verstanden).

Abgesehen davon, würde ich lieber verwenden std::array und for each Schleifen:

Verwandte Themen