Sting



  • Hallo,

    ich möchte aus dem Pfad Dateiname ausgeben. Ist es in c++ Möglich?

    z.B

    string s = datei.c_str(); // ausgabe: 'c:/pfad/test.txt';
    am besten möchte ich test als ausgabe haben.
    

    gruß



  • wieso hast du es nicht ausprobiert?



  • ich habe versucht, aber habe keine Funktion gefunden, die ähnlich funktioniert wie z. b in matlab regexprep oder strrep.



  • der dateiname sollte eigentlich immer bekannt sein.

    // fstream::open
    #include <fstream>
    using namespace std;
    
    int main () {
    
      fstream filestr;
      //Du öffnest die datei ja auch selbst, in dem fall halt die test.txt
      filestr.open ("test.txt", fstream::in | fstream::out | fstream::app);
    
      // >> i/o operations here <<
    
      filestr.close();
    
      return 0;
    }
    

    oder du schaust hier 😃



  • @endless, du hast die Frage falsch verstanden!

    Eine Standardfunktion in C++ gibt es dafür nicht (da Standard C++ noch nicht einmal Pfade und Dateien kennt -), jedoch kannst du mit den String-Funktionen den Dateinamen extrahieren, z.B.

    string s = datei.c_str(); // ausgabe: 'c:/pfad/test.txt';
    
    size_t anfang = s.rfind('/');
    size_t ende = s.rfind('.');
    
    if(anfang == string::npos)
      anfang = 0;
    else
      anfang++;
    
    if(ende == string::npos)
      ende = s.length();
    
    string dateiname = s.substr(anfang, ende - anfang);
    

    Könnten jetzt noch Index-Fehler drin sein, einfach mal ausprobieren...



  • Hi,

    ich versuche eine Funktionzu zu schreiben, die überprüft, ob ein Array element gleich 5 ist, index merkt und ab diesen Index Schleife weiter durchläuft. Mein Codefragment:

    double m[] = {2, 4, 5, 3, 1, 5, 2, 5, 6, 5, 10, 7};
    	std::vector<double> m_max;
            int l = 0;
    	for(int start = l; start < 12; start++)
    	{
    	    if (m[start] == 5){
    	       m_max.push_back(m[start]);
                   l = start;
    		break;
    	    }
    
    	}
    

    z.B findet erte Zahl 5, speichert in m_max und bei der zweiten Schleifedurchlauf
    fängt ab index 3(nicht ab 0)an.
    Ich brauche hilfe, allein finde ich den Fehler nicht.

    Danke Euch,


  • Mod

    Mach für neue Probleme einen neuen Thread auf. Mit Threadnekromantie, noch dazu zu einem völlig anderen Thema, machst du dich ganz schnell ganz unbeliebt.

    Was ist dein Fehler?

    Unabhängig davon, dass ich nicht weiß, was du willst, hat dein Code ein paar Probleme:
    - In Zeile 4 gehst du bei 1 los, Arrays fangen bei 0 an.
    - In Zeile 6 vergleichst du double-Werte mittels ==. Ganz gefährlich, weil es oftmals nicht so funktioniert wie man denkt.
    - Schrecklich unpassende Variablennamen
    - Schrecklich unpassende Einrückung


Anmelden zum Antworten