Stringoperationen für Anfänger - Mögliche Hilfe ?



  • Guten Abend!

    Beim Vervollständigen des Programmes ist mir aufgefallen, dass ich noch Probleme mit den Referenzen in den Funktionen habe.

    Meine Main.cpp:

    #include <iostream>
    #include <string>
    #include <vector>
    #include <fstream>
    #include "keddelklopperspook.h"
    using namespace std;
    int main()
    {
        string name;
        string zeile;// = zB"Diu pliusterst diek op ase en Pfau.";
        cout << " Datei: ";
        cin.ignore();
        getline(cin,name);
        if( !(read(name,zeile)) )
                    cout<<" Datei konnte nicht eingelesen werden";
            else{
                if(write(extract(zeile),name))
                    cout<<"Ausgabe: " +name+ "lsg.txt \n";
                else
                    cout<<"Datei konnte nicht ausgegeben werden";
        return 0;
    }
    

    Meine keddelklopperspook.cpp:

    string extract ( string& zeile , const char& c ) // Trennungszeichen
    {
        string wort = zeile;
        string uebersetzt;
        string buff{""}; // Wörtertrennung
        for ( auto n:wort )
        {
            if ( n != c )
                buff+=n;
            else if (n==c && buff != "")
            {
                wort.append(buff);
                buff = "";
            }
        }
        if (buff != ""){
            wort.append(buff);}
            for ( auto &b : wort )
                b = tolower(b);
            size_t pos = wort.find_first_of("aeiou");
            if ( pos == string::npos )
                uebersetzt.append( wort + "i" ) ;
            else
            {
                rotate( begin(wort), begin(wort) + pos, end(wort));
                uebersetzt.append( wort + "i" ) ;
            }
        return uebersetzt;
    }
    /*bool write(const string& name)
    {
        ofstream tdat( "Z:\\Programmieren 2\\Aufgabe 02\\bsp\\"+name+"lsg.txt" );
        if ( tdat.good() )
            return true;
        else
            return false;
    }
    */
    

    und die dazugrhörige Header Datei:

    #ifndef KEDDELKLOPPERSPOOK_H_INCLUDED
    #define KEDDELKLOPPERSPOOK_H_INCLUDED
    #include <vector>
    #include <string>
    using namespace std;
    bool read ( const string& name, string& zeile );
    string extract ( string& zeile, const char&c );
    void write ( const string& name );
     
    #endif // KEDDELKLOPPERSPOOK_H_INCLUDED
    

    In der keedelklopperspook.cpp stimmt irgendetwas mit der Aufteilung der Worte noch nicht, da beim ersten Wort bis zum ersten Vokal das Wort richtig abgetrennt wird, dieses jedoch ans Ende von dem gesamten String gepackt wird und die Methode mit der ersten Abtrennung auch aufhört. Habe ich in der For-Schleife einen Fehler und sind die Referenzen in den drei Methoden richtig?



  • Dann debugge doch mal diese Funktion (und schau dir dabei besonders Zeile 12 an).


Anmelden zum Antworten