C++ getline eingabe buchstabenweise speichern und mit jedem buchstaben einzeln arbeiten?



  • iterieren?



  • int main()
    {
        std::string satz;
        getline(std::cin, satz);
        for(int j = 0; j < satz.size(); j++)
        {
            if(satz[j] == 'a')
            {
                std::cout << "Der Satz enthaehlt ein a" << std::endl;
            }
            if(satz[j] == 'b')
            {
                std::cout << "Der Satz enthaehlt ein b" << std::endl;
            }
            //if(...
        }
    }
    

    Meinst du so etwas? Du kannst den String wie ein Char-Array handhaben und es wird der 1. Buchstabe bis zum letzten Buchstaben geprüft.
    Die for-Schleife wird also solange ausgeführt, wie der String satz "lang" ist.



  • ja so meinte ich das! aber wenn ich das compiliere dann kommt raus: ISO C++ forbids comparsion between pointer and integer! was heißt das denn jetzt schon wieder?

    es bezieht sich auf das: if(satz(<-- hab ich mal ersetzt)[i]=="b"){



  • Weil du mein 'b' in "b" geändert hast. Du musst " durch ' ersetzen.



  • sehr gut vielen dank! es finktioniert einwandfrei!!



  • Bezüglich deiner Frage "iterieren?", hier ein minimal Beispiel:

    #include<iostream>
    #include<string>
    
    int main()
    {
        std::string satz;
    
        getline(std::cin, satz);
        std::string::iterator begin = satz.begin();
        for(begin; begin != satz.end(); begin++)
        {
            if(*begin == 'a')
            {
                std::cout<<"a gefunden"<<std::endl;
            }
        }
    }
    


  • wie kann ich das was jetzt ausgegeben wurde noch in einer datei speichern? weil wenn das so direkt ausgegeben wird hab ich das ja nicht in einer variablen!



  • In eine Datei speichern ? Du hast es dann nicht in einer Variable ? Was genau willst du jetzt machen das in ein Textdokument schreiben ? Konkrekter bitte.



  • Dann liest das halt in deine Variablen ein.
    Am besten über stringstreams.



  • also ich hab jetzt ja zu jedem buchstaben ein if(satz[i]=='buchstabe'){cout<<"...";} gemacht! und jetzt möchte ich alles was für jeden buchstaben der eingabe eingegeben wurde in einer datei (txt) speichern.



  • weiß das keiner?!



  • Blake_MaX schrieb:

    weiß das keiner?!

    1. Wäre es Zeit, dass du selber anfängst zu überlegen und ein wenig mit goole zu bemühen. Tipps haben wir bereits genug gegeben, dass du mithilfe von goole alles finden solltest, was du brauchst.
    Hier noch ein Link zu einer Referenz, wo auch viel steht:
    http://www.cplusplus.com/reference/

    2. Solltest du, wenn du Hilfe erwartest deinen Sachverhalt besser schildern. Deine wirrgen Gedankengänge sind für uns nur schwer nachzuvollziehen.

    3. Solltest du dich in Geduld üben. 20 Minuten in einem Forum zu warten ist überhaupt nichts und ein "Weiss das keiner?" und "push" mögen wir (ich denke ich kann da in allen Namen sprechen) nicht.



  • ok...war jetzt nicht so gemeint es ist nur so das ich keine ahnung hab wonach ich suchen soll weil ich irgendwie nicht weiß was da genau gemacht werden soll! aber danke für die hilfe!



  • Ich habe bereits gesagt, wie du das am besten machst. stringstreams.

    Jetzt gehst du auf die Referenz, die ich gepostet habe und suchst dort nach 'stringstream'. Und dann schaust du, wie man damit umgeht. Und dann solltest du von alleine auf die Lösung kommen.



  • Ich versteh trotzdem nicht wie ich das machen soll! soll ich jetzt jeden einzelnen ausgabewert in einer variablen speichern und diese dann am ende ausgeben?! das wäre doch viel zu viel arbeit!



  • Ok du willst es in deine Datei Speichern?
    Lass mal überlegen was fallen uns da für Suchbegriffe ein?
    Ahh naklar
    C++ Datei schreiben
    C++ Dateien lesen und schreiben
    Und nun ab mit dir zu google und eingeben und lesen!!



  • ja ne wie man speichert weiß ich mitlerweite aber ich habe keine ahnung wie ich diese ausgegebenen stücke in einer geeigneten variablen speichert! DAMIT ich das speichern kann!

    ich dachte beim speichern an:

    ofstream speichern;
    speichern.open("egal was");
    speichern<<"hier muss das rein was ausgegeben wird!";
    speichern.close();



  • ja dann speicher doch das was ausgegeben werden soll vorher in einem string und dann hau es in die datei.



  • Ich glaub Werner hatte in dem Forum mal nen Code geschrieben, der es möglich macht mit einer Zeile, die Ausgabe auf Bildschirm und in eine Datei zu bringen.
    Ungefähr so sieht die Zeile aus :

    streamname << ausgabe;
    

    Und damit wurde es dann angezeigt und in der Txt gespeichert. Am besten gehste mal auf Werners Profil und suchst mal nach Operatorenüberladung oder sonstiges.



  • FreakY<3Cpp schrieb:

    Ich glaub Werner hatte in dem Forum mal nen Code geschrieben, der es möglich macht mit einer Zeile, die Ausgabe auf Bildschirm und in eine Datei zu bringen.

    Dazu kann man sich auch eine Klasse schreiben, die den operator<< überlädt und dessen Aufrufe intern jeweils an std::cout und ein Objekt von std::fstream weiterleitet...

    Das, was bereits auf der Konsole steht, kann man normalerweise nicht mehr zurückholen.


Anmelden zum Antworten