2016-06-10 4 views
-2

Ich verwende WDL_String Container, um Zeichenfolge in einem C++ Framework zu verwalten. Ich muss eine Zeichenfolge (Trennzeichen \) teilen und das letzte Vorkommen erhalten.Wie kann ich die Position des letzten Char-Vorkommens zurückgeben?

kann ich die native Methode verwenden:

mFilePath.DeleteSub(mLastOccPosition, mFilePath.GetLength()); 

die Zeichenfolge die Haftung verbessernden, aber ich weiß nicht, wie die mLastOccPosition zu fangen.

Also, wenn ich diese Zeichenfolge haben:

D:\\Google Drive\\My Files\\Test.zip 

Ich brauche Test.zip zurückzukehren. Was ist der beste Weg, dies in C++ zu tun?

+0

siehe diese http://stackoverflow.com/questions/14265581/parse-split-a-string-in-c-using-string-delimiter-standard-c –

+0

@ F.bernal: Ich verwende nicht ' string' – markzzz

+0

benutze const char * Get() const und dann erzeuge deine std string –

Antwort

1

Wenn s eine Instanz von std::string ist, dann würde s.find_last_of('\\') es tun.

Es gibt std::string::npos zurück, wenn es nicht gefunden werden kann.

Sie können dann std::string::substr verwenden, um das benötigte Bit zu extrahieren.

+0

Wie gesagt, ich arbeite nicht mit String. Aber WDL_String. Ich kann 'char *' von WDL_String bekommen. – markzzz

+0

Nun, Sie haben nach dem besten Weg gefragt, und das ist wahrscheinlich, um 'std :: string s (/ * die Funktion, die das char * * /) bekommt', und gehen Sie von dort. Es hat keinen Sinn, den Extraktionscode von Grund auf neu zu erstellen. – Bathsheba

+0

Ist es nett, sowas? (Ich brauche keinen Verweis auf string): '(string (mFilePath.Get())). Find_last_of ('\\')' – markzzz

Verwandte Themen