C++ getline eingabe buchstabenweise speichern und mit jedem buchstaben einzeln arbeiten?
-
Nabend!
Ich möchte gerne eine "getline" eingabe in einer variablen speichern und diese dann buchstaben weise bearbeiten. d.h. für einen bestimmten buchstaben wird auch etwas bestimmtes ausgegeben! ist das möglich?mfg
-
Jo, klar ist das möglich. Du liest einfach in einen string ein und dann kannst du da auch wie sonst immer in deer Standardbibliothek drüber iterieren.
-
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.