Einen string auf mehrere Substrings prüfen
-
Hi,
ich will prüfen, ob in einem string ein gewisser Substrings vorkommen.Beispiel:
vector<string> check_against; check_against.push_back("jpg"); check_against.push_back("jepg"); check_against.push_back("gif"); check_against.push_back("png"); string bild = "test.jpg";Nun will ich wissen, ob "bild" ein jpg, jpeg, gif, png ist. Klar, ich könnte 4x find aufrufen und eine for-Schleife machen. Aber da gibts doch bestimmt einen schönen STL-Algo oder?
Danke euch :=)
-
Du könntest nach dem letzten Punkt suchen und das was danach kommt mit einer (vorsortierten) Liste vergleichen (std::binary_search oder ähnliches).
Oder du machst es gleich richtig, vergisst Dateiendungen, und orientierst dich stattdessen an dem, was in der Datei steht.
-
SeppJ schrieb:
Du könntest nach dem letzten Punkt suchen und das was danach kommt mit einer (vorsortierten) Liste vergleichen (std::binary_search oder ähnliches).
Oder du machst es gleich richtig, vergisst Dateiendungen, und orientierst dich stattdessen an dem, was in der Datei steht.
Hi, danke dür deine Antwort.
Was in der Datei steht interessiert mich nicht.
Was ich machen will ist: Ich habe ganz viele Ordner (ca. 500) und ganz viele Bilder (ca. 4000). Die Namen der Ordner und er Bilder sind schrecklich. Ich will nun jedem Ordner einen ordentlichen Namen geben. Und jedes Bild in dem Ordner soll den Namen des Ordners + eine fortlaufende Nummer bekommen.Beispiel:
Ordner Name: Urlaub 2010
Bilder darin: Urlaub 2010 - Bild 1.jpg, Urlaub 2010 - Bild 2.jpg, Urlaub 2010 - Bild 3.jpg ....Und wo ich das hier so schreibe, fällt mir auf, dass mich die Dateiendung gar nicht interessieren muss, ich muss ja nur die Zeichenkette vor dem '.' umbenennen.

das std::binary_searc schaue ich mir dennoch mal an.
-
Das machst du mit C++?

Na gut, jeder nach seinem Geschmack. Ich hätte das ja mit einem kurzen, kleinen Shellscript gelöst.
-
SeppJ schrieb:
Das machst du mit C++?

Na gut, jeder nach seinem Geschmack. Ich hätte das ja mit einem kurzen, kleinen Shellscript gelöst.
Hi. Ja, bin Anfänger und mache mir immer so kleine Aufgaben. Will nun bissel was mit boost filesystem machen. Und ja.

Hmm mit Shellscripten hab ich mich noch nie beschäftigt. Ist es damit viel einfacher und geht schneller?
-
Ich wollte Boost.Filesystem vorschlagen, aber dann dachte ich, du bist noch Anfänger...
Out schrieb:
Hmm mit Shellscripten hab ich mich noch nie beschäftigt. Ist es damit viel einfacher und geht schneller?
Einfacher: Ja
Schneller: Keine Ahnung, wahrscheinlich ja, weil alle Funktionen dafür sowieso durch Boost.Filesystem an die WinAPI delegiert werden müssen
-
@Sone
Bisschen mitdenken schadet nicht...Mit "geht schneller" meit er wohl nicht ob das Programm schneller läuft sondern ob er das Programm damit schneller fertigbekommt.
-
Das liegt nicht am Mitdenken.
Ich lese zu schnell. Hab mich - verlesen.Verdammt, ich muss langsamer lesen.

-
Sone schrieb:
Verdammt, ich muss langsamer lesen.

Oder schneller denken. :p
-
EOP schrieb:
Sone schrieb:
Verdammt, ich muss langsamer lesen.

Oder schneller denken. :p
Was soll ich denn denken, wenn ich lese "[...] und läuft schneller?"
-
hustbaer schrieb:
@Sone
Bisschen mitdenken schadet nicht...Mit "geht schneller" meit er wohl nicht ob das Programm schneller läuft sondern ob er das Programm damit schneller fertigbekommt.
Richtig :D. Ich habs nun mit boost filesystem hinbekommen. War relativ einfach, brauchte ja nur directory_iterator und copy_file (Umbenennen ist da schon dabei). binary_search hab ich dennoch gebraucht, da ich doch nicht nur Bilder hatte. Hat alles funktioniert. Danke euch

-
Um die Datei umzubenennen kopierst du sie?

-
Sone schrieb:
Um die Datei umzubenennen kopierst du sie?

Nein:D In einem Ordner gibt es auch Unterordner und wieder Unterordner. D.h. ich erstelle einmal einen Ordner und geh dann rekursiv durch und kopier mir alle Dateien in meinen neuen Ordner.

-
Du wolltest also von Anfang an alle kopieren, richtig?
-
Sone schrieb:
Du wolltest also von Anfang an alle kopieren, richtig?
Ich wollte sie umbenennen und dann kopieren, ja. Dann hab ich gemerkt, dass umbenennen bei copy_file dabei ist.

-
Haltet den Dieb. Vielleicht sollte ich mich doch mal anmelden.

-
Ich habe mich auch über dein Niveau gewundert.
-
Es war doch klar, dass es nicht out war...

Btw: Anmelden ist ne Super-Idee. Was spricht dagegen?
-
Sone schrieb:
Es war doch klar, dass es nicht out war...

Ja, spätestens bei
out schrieb:
das std::binary_searc schaue ich mir dennoch mal an.

-

Hi, danke dür deine Antwort.
Wenigstens hat unser out noch einen gewissen Sinn für Orthographie.
Edit: Naja, obwohl - der Rest sieht gut aus. Aber das klare Anzeichen war definitiv auch
Ja, bin Anfänger