CStringArray an Methode übergeben?
-
... hatte ich vergessen.
Alles war in meinem ersten Post bereit korrekt implementiert/deklariert.
Fehlermeldung bleibt die gleiche...
Gruß
Alexander
-
Wenn du nur suchst, solltest du lieber eine const Referenz als Parameter nutzen, anstatt eine Kopie des Arrays zu machen.
-
Ich wollte diese Lösung nur verfolgen, weil ich es nicht besser kann.
Hast Du evtl. ein kleines Beispiel?
Gruß und Danke
Alexander
-
int FindInArray(const CStringArray& MyArray, CString MySearchWord );
So habe ich das gemeint. Dadurch sparst du dir das Kopieren, was natürlich performanter ist.
Zum Suchen kannst du aber auch std::find aus der STL benutzen( im Header <algorithm>) Kann aber sein da musst du dir erst ein Funktionsobjekt schreiben, ich weis jetzt nicht inwieweit CStringArry Iteratoren anbietet.
-
Ich probier's aus und melde mich wieder.
Danke und Gruß
Alexander
-
Wenn ich meine Methode so deklariere:
int FindInArray( const CStringArray& MyArray, CString SearchText ) { CString test; test = MyArray.ElementAt( i ); // return 1; }
bekomme ich als Fehler
C:\***\MyDlg.cpp(1376) : error C2662: 'ElementAt' : this-Zeiger kann nicht von 'const class CStringArray' in 'class CString Array &' konvertiert werden
Also wie greife ich dann innerhalb der Methode auf das Array zu?! :=)
Vielen Dank
Gruß
Alexander
-
#include <algorithm> using namespace std; ... CString findeMich(_T("Hello world")); CString* strEnd = strArray.GetData() + strArray.GetCount(); if (find(strArray.GetData(),strEnd,findeMich) != strEnd) { AfxMessageBox(_T("Gefunden!")); }
Ist jetzt ungetestet kannst ja mal schauen, ob das geht.
-
Das Beispiel hat mit dem vorherigen nichts mehr zu tun, oder?
By the way: Das ganze Procedere soll mir den Schlüssel (index) eines Suchwortes innerhalb eines CStringArray zurückgeben.
// Beispiel: CStringArray testArray; testArray.Add( "Eins" ); testArray.Add( "Zwei" ); testArray.Add( "Drei" ); int Key; Key = FindInArray( testArray, "Zwei" ); // Ergebnis wäre index = 1. (also 2. Element)
Gruß
Alexander
-
#include <algorithm> int findIndex(const CStringArray& strArray,const CString& findThis) { const CString* strBegin = strArray.GetData(); const CString* strEnd = strBegin + strArray.GetSize(); const CString* strFind = std::find(strBegin,strEnd,findThis); if (strFind != strEnd) { return strFind - strBegin; } return -1; }
-
Läuft, funzt und hat Luft!
Vielen, vielen Dank
Gruß
Alexander