"in den Linden 15" - Leerzeichen lesen



  • Hi! Der Anfänger braucht wieder Hilfe 🙂 *liebschau*

    Ich habe eine Adresse in einer Datei "Arbeiter.xxx", z. B.

    Max Muster
    In den Linden 15
    00000 Musterhausen

    Wie kann ich jetzt im Programm, das in Adressen bestimmte Wörter suchen soll, "In den Linden 15" lesen. Die anderen Sachen kann man ja schon im String speichern, aber wenn ich "in.getline(Strasse, 100);" schreibe, würde er für Strasse ja wahrscheinlich auch "00000 Musterhausen" mitlesen und das ist in meinem Falle ziemlich scheiße...
    Gibbet da n Trick? Im Sinne von "in << Strasse << endl;" vielleicht?!

    Danke im voraus,
    Mr. B.



  • in << nummer << stadt;
    

    Whitespaces werden "überlesen"...



  • Quatsch, andersrum. Wie dumm von mir.

    filestream >> nummer >> stadt;
    


  • mit getline liest er immer nur maximal eine Zeile (getline == Hole Zeile).

    btw. würde ich nicht std::istream::getline sondern std::getline und std::string benutzen



  • in  >> sArbeiter.Vorname;
    in  >> sArbeiter.Nachname;
    in.getline(sArbeiter.Strasse, 100);
    in  >> sArbeiter.PLZ;
    in  >> sArbeiter.Ort;
    in  >> sArbeiter.BLZ;
    in  >> sArbeiter.Kontonummer;
    

    Wenn ich das da oben schreibe, dann erhalten ich folgendes im Programm:

    Vorname: Max
    Nachname: Mustermann
    Strasse:
    PLZ: Zur
    Ort: Schlossallee
    BLZ: 5
    Kontonummer: 55555

    Was mach ich falsch? Weiß das denn keina?



  • Wenn "in.getline" nur eine Zeile lesen würde, müsste meins da oben ja klappen, aber der Straßenname verteilt sich ja über alles... 😞



  • versuch es doch mal mit:

    in.getline(sArbeiter.Strasse, 100,'\n');
    

    mit dem Parameter '\n' gibst du der getline-Fkt mit, daß max. 100 Zeichen aber auch maximal bis zu einem Zeilenumbruch gelesen werden soll



  • getline(in,sArbeiter.strasse);

    Devil



  • @devil81:
    aber

    in.getline(zeile, 100,'\n');
    

    funktioniert, egal ob

    ifstream in;
    

    oder

    strstream in;
    


    warum stehst du auf

    devil81 schrieb:

    getline(in,sArbeiter.strasse);

    😕



  • getline(in,foo);

    funktioniert auch mit sstream und istream...

    Nur nimmt es nebenbei noch std::strings und keine C-Strings, was dafür sorgt, dass man sich keinen Kopf um die Zeilen länge machen muss und einfach mal 1000byte reserviert obwohl maximal vielleicht 100byte in jeder Zeile stehen 🙄

    btw. '\n' ist schon das default Zeichen für den Zeilenumbruch



  • okay, ihr habt gewonnen!
    thanx'!



  • Moment... Ich hab

    in.getline(sArbeiter.Strasse, 100, '\n');
    

    eingegeben und das ganze bleibt so wie es schon vorher war. Also dass sich die Strasse über den Rest verteilt.

    Soll ich vielleicht mal die ganze Funktion kopieren, damit euch das Problem klarer wird? Vielleicht mach ich ja war ganz anderes falsch!?

    (Meine Antwort kam so spät, weil ich auf Klassenfahrt war)

    Mr. B


Anmelden zum Antworten