[C/C++] Dateinamen suchen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von ich2005, 12. November 2010 .

Schlagworte:
  1. 12. November 2010
    Dateinamen suchen

    Hallo,

    ich habe ein Problem mit einem C++ Programm. Es wird eine Textdatei eingelesen, in der verschiedene Dateinamen in der Form 123456.avi (Zahlenfolge nicht bekannt) vorkommen. Wie durchsuche ich nun den String und speichere die Dateinamen in einem Array ab?

    mfg
     
  2. 12. November 2010
    AW: Dateinamen suchen

    std::string::find() und die Möglichkeit mehrere Strings zu speichern wäre std::vector, std::list, etc.

    [G]cpp std::string reference[/G] Sollte dir bei der funktionsweise von std::string::find() helfen.
     
  3. 16. November 2010
    AW: Dateinamen suchen

    Danke, funktioniert mit find() ganz gut. Nur hab ich jetzt das Problem das ein String für den Text nicht ausreicht und ich die Daten jetzt in ein char array geschrieben habe. Nur funktioniert das hier mit find() nicht mehr. Alternativ stehen die Daten auch in einem Memo. Was ist hier leichter zu durchsuchen, und wie?

    mfg
     
  4. 17. November 2010
    AW: Dateinamen suchen

    Was heißt ein string reicht nicht? Der ist dynamisch und kann eigentlich so viele Daten aufnehmen, wie an RAM verfügbar ist...

    Bitte Beispielcode!
     
  5. 21. November 2010
    AW: Dateinamen suchen

    Bin jetzt nochmal alles durchgegangen. Das Problem liegt nicht an der Variablen sondern beim Auslesen der Textdatei. Es sind warscheinlich zu viele Zeichen in einer Zeile.

    mit

    while( !feof( fp ) )
    {

    Memo1->Lines->Add(fgets(zeile,1024,fp));
    buffer = buffer + fgets(zeile,1024,fp);

    }

    lese ich die Textdatei aus. Gibt es einen anderen Befehl der die letzten Zeichen nicht abschneidet sondern wirklich alle Zeichen einer Zeile ausgibt?
     
  6. 22. November 2010
    AW: Dateinamen suchen

    Code:
    #include <iostream>
    #include <fstream>
    #include <string>
    
    using namespace std;
    
    int main(void)
    {
     ifstream ifs("datei.txt", ios_base::in);
     string buff;
    
     while(ifs.good()) {
     getline(ifs, buff);
    
     // in buff ist nun eine zeile
    
     buff.clear();
     }
    
     ifs.close();
    
     return 0;
    }
    wenn du schon c++ programmieren willst, dann kannst du ja die ganzen netten vorteile nutzen.
    feof() und fgets() usw. solltest du in c++ nicht verwenden -> das ist c und nicht c++.
     
  7. 22. November 2010
    AW: Dateinamen suchen

    Dann schon lieber so:
    Code:
    #include <iterator> 
    #include <fstream> 
    #include <string> 
    
    std::string get_file_as_string(const char* filename) 
    { 
     std::fstream file(filename, std::ios_base::out); 
     file << std::noskipws; 
    
     if(file.bad()) 
     throw std::runtime_error("error when opening file \'" + std::string(filename) + "\'"); 
    
     std::istream_iterator begin(file), end_of_file; 
     return std::string(begin, end_of_file); 
    } 
    
    #include <iostream> 
    
    int main() 
    { 
     std::string text = get_file_as_string("./test.txt"); 
    
     std::cout << text << std::endl; 
    } 
    (Code von Ad aCTa)
     
  8. 22. November 2010
    AW: Dateinamen suchen

    er braucht das ganze aber zeilenweise wie ich das gelesen hab, deswegen die schleife mit '\n' als abbruchbedingung in meinem code. aber da gibts sicher auch bessere methoden in der stl ^^

    // hab meinen code nochmal überarbeitet.
     
  9. 22. November 2010
    AW: Dateinamen suchen

    Code:
    #include <fstream> 
    #include <vector>
    #include <string> 
    
    std::vector<std::string> get_file_as_vector(const char* filename) 
    { 
     std::ifstream file(filename, std::ios_base::in); 
     
     if(file.bad()) 
     throw std::runtime_error("error when opening file \'" + std::string(filename) + "\'"); 
    
     std::vector<std::string> vec_tmp;
     std::string tmp;
    
     while (file >> tmp)
     vec_tmp.push_back(tmp);
    
     file.close();
     return vec_tmp;
    }
     
  10. 22. November 2010
    AW: Dateinamen suchen

    Is ja jetzt acuh quark wie er es implementiert, hauptsache er versteht es und weiß sich zu verbessern, wenn er soweit ist. Ein einfaches getline() reicht vollkommen für seine Aufgaben, da brauch er keinen std::vector.
     
  11. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.