Inhalt eines Textes Wort für Wort in ein Array schreiben



  • Hi Leute!

    Wie kann ich den Inhalt eines Textfiles Wort für Wort in ein Array schreiben?

    Danke.

    Johannes



  • Schritt 1: Leg ein Array von char* an (möglichst groß genug)
    Schritt 2: hol' das nächste Wort mit fscanf(file,"%s",worte[i]); aus der Datei
    Schritt 3: erhöhe den Zähler (i)
    Schritt 4: Wiederhole 2 und 3, bis zum EOF

    (Problem dabei dürfte die Speicherverwaltung sein - wenn du C++ zur Verfügung hast, nimm lieber einen vector<string> und fstreams dafür)



  • hi!

    hab auch c++ zu Verfügung.
    Könntest du das mit dem vector ein wenig genauer ausführen bitte.
    wäre nett. hab sowas noch nie gemacht.

    Danke.

    Johannes



  • Ein kleiner Codefetzen:

    vector<string> worte;
    string wort;
    while(fin>>wort) wort.push_back(wort);
    

    vector und string haben gegenüber C Arrays den Vorteil, daß sie sich selber den nötigen Speicherplatz beschaffen - in einer reinen C Umgebung müsstest du vorher wissen, wieviel Platz du benötigst und entsprechend viel mittels malloc() anfordern.



  • werd mal versuchen damit klarzukommen.

    sind diese vektoren 1-dimensional, oder können die die auch mehr dimensionen haben?

    danke.
    johannes



  • Wie du magst.

    //Eindimensional:
    std::vector<int> vec;
    
    //Zweidimensional:
    std::vector< std::vector<int> > vec2;
    
    ...
    


  • es gibt auch realloc()...



  • Das Textfile ist ziemlich groß.

    Wie bekomme ich dieses Textfile nun in einen Vector?
    Kann ich in dem Vektor dann nach Wörtern suchen um die Zeile in der das Suchwort vorkommt in ein Auslesfile schreiben?

    DANKE.

    Johannes



  • keboo schrieb:

    Wie bekomme ich dieses Textfile nun in einen Vector?

    Wortweise mit fstream::operator>>() bzw. zeilenweise mit fstream::getline() in einen String einlesen und diesen anschließend mit push_back an den Vektor anhängen.

    Kann ich in dem Vektor dann nach Wörtern suchen um die Zeile in der das Suchwort vorkommt in ein Auslesfile schreiben?

    In dem Fall würde ich die zeilenweise Abarbeitung (getline) nehmen und dann mit

    string suchwort="Hilfe";
    for(int i=0;i<worte.size();++i)
      if(worte[i].find(suchwort)!=string::npos) fout<<worte[i]<<endl;
    

    den vector durchsuchen und ausgeben (fout ist der Stream für das Ausgabefile).



  • das hat CStoll bereits oben angerissen!
    Du musst die Datei als Stream oeffnen, dann einlesen und nicht vergessen ihn wieder zu schliesen!

    @CStoll: Ich bin einfach zu langsam und zu unausfuehrlich 🙂



  • werd mal versuchen das hinzubekommen!!


Anmelden zum Antworten