Dateinamen in String kopieren

LetsFetz

Grünschnabel
Hallo an alle,
ich würde gerne ein Programm in C++ schreiben, das in einem Ordner nach Liedern (MP3) sucht und zu jedem Interpreten anhand des Dateinamens einen Ordner erstellt.

Die Dateien sind dabei nach dem Schema benannt: Interpret - Titel.mp3. --> Das Programm sucht im Dateinamen nach einem Bindestrich und schiebt alles vor dem Bindestrich (= der Interpret) in einen String. Danach erstellt es einen Ordner, benannt nach dem Interpreten / nach dem String.

Das funktioniert auch schon soweit, bis auf das automatische Suchen der Lieder in dem Ordner in dem das Prog. liegt, bis jetzt muss ich immer den Dateinamen in den String "data" schreiben. Das Programm sollte aber wenn möglich die Dateinamen der Lieder in einen String schieben.
Kann mir BITTE jemand helfen? :confused::confused::confused:
Ich hoffe ich habe mich verständlich ausgedrückt, ansonsten hier nochmal der Code:

Code:
#include <iostream>
using namespace std;
#include <string>
#include <direct.h>

int main()
{
    char mkdir[512];
    //Hier kommt das Problem. Da müsste der Dateiname automatisch rein //
    std::string data="Interpret - Titel.mp3"; 
    int i=data.find('-');
    if(i>=0){
        std::string Definition=data.substr(0, i);
        std::string Datei=data.substr(i+1);

        printf("Interpret: %s\n", Definition.c_str());
        printf("Musiktitel: %s\n", Datei.c_str());

        // Ordner erstellen //
        Definition = "md "+Definition;
        strcpy(mkdir, Definition.c_str());
        system(mkdir);}
    return 0;
}
 
Hallo!
Ich habe zum rekursiven dursuchen von Verzeichnissen auf der Microsoft Seite was gefunden. Das ist zwar für Visual C++:
http://support.microsoft.com/kb/307009/de
Die Dateien werden dabei in ein String Array geladen.
Somit kannst du dann einfach deine Funktion in eine for-Schelife packen und auf jeden Dateinamen zugreifen.
 
Ich habs jetzt jetzt soweit:

Code:
// Header //
#include <iostream>
using namespace std;
#include <string>
#include <direct.h>
#using <mscorlib.dll>
using namespace System;
using namespace System::IO;

// Dateien einlesen //
string fileNames = Directory::GetFiles("C:\\", "*.mp3*");
cout << fileNames << endl;

aber der Compiler sagt in der Zeile:
Code:
fileNames = Directory::GetFiles("C:\\", "*.mp3*");
Das hier:

'cli::array<Type,dimension> ^' kann nicht in 'std::basic_string<_Elem,_Traits,_Ax>' konvertiert werden.

Welchen Typ muss der String "fileNames denn haben?
Danke für Antworten!
 
Hallo!
So wie ich das sehe, hast du das Programm in ANSI C++ (Standard C++) geschrieben.
In dem Code aus deinem Beitrag verwendest du aber einen Mix aus ANSI C++ und C++/CLI (oder auch Managed C++, verwendung des .NET Framework).
Ich empfehle dir, dir erst mal die Grundzüge von C++/CLI anzueignen und anschließend alles in C++/CLI zu schreiben, da dies im Vergleich zu ANSI C++ viel einfacher ist und sehr viele nützliche Funktionen und Klassen bereitstellt!

Grüße
 
Danke an Alle - Erledigt

Ich hab da wohl zu schnell das Forum angefragt:confused:
Hab das Problem durch suchen und finden schon am nächsten Tag alleine hinbekommen, ich saß wohl schon zu lange dran, dass mir der Fehler nicht ins Auge gesprungen ist... ^^

Ich hab gern vor mich noch ein bisschen in C++ zu vertiefen, bis jetzt hab ich mir die Grundkenntnisse über Solars Grundkurs Hier selbst beigebracht und alles was ich für spezielle Sachen brauchte aus dem Internet geholt. Kennt jemand ein gutes Buch o.ä.? Oder wäre ein VHS Kurs eine gute Investition?

Einen großen Dank an alle
 
Ich habe mir C++/CLI selbst beigebracht.
Dazu habe ich das Buch von Galileo Computing: Einstieg in Visual C++ 2005 (hier) benutzt.
Das Buch war sehr hilfreich und gut Aufgebaut. Ich kann es nur weiterempfehlen.

Grüße
 
Zurück