cin mit nullen auffüllen.



  • Guten Tag,

    Ich bin der Neue hier und soll mich vorstellen 🙂

    Ich habe vor kurzem mit C++ angefangen und habe bereits ein gutes Tutorial gefunden, das mir dabei hilft. Als leichtes Startprojekt habe ich mir ein SEPA-Rechner gedacht.

    Beim berechnen habe ich auch keine Probleme - jedoch bei folgendem:

    Die Kontonummern müssen bei dem Verfahren 10 Stellen haben und diese müssen aktuell per Hand mit 0 links von der Eingabe aufgefüllt werden. Für COUT habe ich setw und setfill gefunden - gibt es die Möglichkeit die CIN ebenfalls diese operatoren zu nutzen?

    cin >> setw(10) >> setfill('0') >> input_kontonummer;
    

    Dies war mir rein logisch der Weg der aber natürlich nicht ging.

    Jemand da nen Tipp für mich?

    Danke euch schonmal

    MfG

    Jearro



  • Was ist denn input_kontonummer für ein Typ?
    Ein std::string wahrscheinlich, oder?
    Oder ein ganzzahliger Typ? Dann machen führende nullen natürlich keinen Sinn.

    Bei einem String führende Nullen einzufügen, bis die Länge 10 erreicht ist ist doch eine schöne Anfängeraufgabe.



  • Hallo,

    das schöne an streams ist ja, dass du die austauschen kannst.
    Schreib hier nicht nach cout, sondern in einen stringstream.


  • Mod

    Erklärt ihm doch nicht, wie er um die Fehler in der falschen Lösung herum programmieren kann, sondern erklärt, was falsch ist. Die Kontonummer ist hier offensichtlich nicht als Ziffernfolge modelliert, sonst würde sich die Frage gar nicht stellen. Sollte sie aber, denn obwohl sie für den Laien aussieht, wie eine Zahl, ist sie kein arithmetischer Wert (wie sehr viele Ziffernfolgen des Alltags auch).

    Furble Wurble schrieb:

    Was ist denn input_kontonummer für ein Typ?
    Ein std::string wahrscheinlich, oder?

    So sollte es sein. Oder ein eigener Typ, der auch noch die Unterschiede zwischen einer allgemeinen Zeichenfolge (string) und einer Kontonummer berücksichtig (z.B. nur Ziffern zulässt). Aber auf jeden Fall kein Ganzzahltyp Aber auch dann muss man aufpassen 🙂 . Datenmodellierung ist eben nicht immer ganz einfach.



  • Als Datentyp hab ich einen string genommen, da ich später ja nur mehrere strings zusammenfügen will und nicht wirklich mit den zahlen rechnen will.

    habs mal mit .length gemacht und dann per schleife den char '0' davor gepackt.

    sicher nicht ganz sauber und stylistisch schön aber es funktionierte.

    habs dann zur übung als stringstream umgebaut

    danke euch 🙂


  • Mod

    Jearro schrieb:

    Als Datentyp hab ich einen string genommen, da ich später ja nur mehrere strings zusammenfügen will und nicht wirklich mit den zahlen rechnen will.

    Dann ist ja gut. Ich bin wohl schon vom Forum hier geschädigt und sehe Anfängerfehler, wo gar keine sind 😃 .

    habs mal mit .length gemacht und dann per schleife den char '0' davor gepackt.

    Ein nettes insert am Anfang, um die fehlende Differenz, mit dem Zeichen '0' (also die Variante 5 in der Referenz), bietet sich auch an. Macht zwar intern wahrscheinlich das gleiche, sieht im Anwendungscode aber besser aus.



  • Hi,

    wollt für meine Frage nicht unbedingt einen neuen Thread aufmachen.

    Beim zusammensetzen des Zielstrings durch 4 teilstrings bekomme ich ein problem:
    wenn ich den zielstring in eine datei ausgebe ist das ergebnis richtig, gebe ich es aber im zwischenspeicher ODER im programm selbst aus , bekomme ich folgendes

    erstmal den string-abschnitt

    zielstring = string1 (in ihm stehen 2 buchstaben) + string2 + string3 + string4 (in ihnen sind zahlen)
    

    ok in der ausgabe kommt nach den 2 buchstaben eine art kleiner pfeil in der zwischenablage bzw im programmfenster - in der datei steht er nicht. kopiere ich aber aus dem textfile heraus, ist dsa zeichen beim kopieren in ein textfeld z.b. auf ner homepage der string der eingefügt wird auf der hp nach dem zeichen weg. also CH und dann nichts z.b..

    ich habe keinerlei formatierung des textes im code vorgenommen, wenn ich den kram mit 2 char-variablen zusammensetze habe ich das problem nicht.

    ist das ein formatierungsproblem das ich erst später wirklich verstehen werde ?:o

    danke euch schonmal und eine schöne woche 🙂

    mfg


  • Mod

    Das wird irgendein Sonderzeichen sein, das dein Texteditor und deine Konsole unterschiedlich darstellen. Mit einem vollständigem Minimalbeispiel kann man dir vielleicht auch sagen, wo das her kommt.

    Und bitte arbeite an deinem Satzbau. Ich kann nur die Hälfte erraten, von dem was du meinst. Nimm dir die nötige Zeit, deine Beiträge in klarer Sprache zu verfassen. Schreib nicht so, wie du sprichst!


Log in to reply