[C++] Eingabe einer Zahl ohne Newline

Jennesta

Erfahrenes Mitglied
Hi,
ich möchte gerne einige Zahlen hintereinander einlesen lassen. Da dies doch recht viele Zahlen werden wird es schnell unübersichtlich, wenn man nach jeder Eingabe ein Newline hat. Jedoch bekomme ich es überhaupt nicht hin eine Funktion zu benutzen, wo ich nach der Eingabe der Zahl direkt dahinter weiterschrieben kann.

Versucht habe ich es bisher mit
- cin
- cin.ignore
- scanf
- cin.sync (zum Puffer löschen)
und irgendwlechen wilden Kombinationen, aber das Resultat blieb bisher aus.
Hat jemand eine Idee für mich?

Gruß Jennesta
 
hi, ich bin mir gerade nicht ganz sicher, aber versuch doch mal cin.getline(char* buffer, streamsize num, char delim) und als Delimiter nimmst du " " also Space, ich vermute das sollte gehen.
 
Ich würde mal sagen, dass ist über die Standard-Ein/Ausgabe relativ schwierig (wenn möglich) ist. Hast du dich schon einmal mit E/A-Stream im allgemeinen beschäftigt?
Wenn du also einen eigenen ostream benutzt, kannst du (soweit ich weiß) der Verknüpfung aus dem Weg gehen.

Hoffe, dir geholfen zu haben.

Gruß,

badday
 
Also ich weiß gerade nicht genau wie du das mit dem damit beschäftigen meinst, ich bin schon in der Lage die streams zu nutzen zu überladen usw. Nur bisher habe ich halt nie Wet auf die formatierung gelegt, was nun in Bezug auf das Problem wichtig ist. Weil 100 Zeichen machen sich auf 10*10 doch besser lesbar als 100*1 Zeilen ;)

Und den Punkt mit dem eigenen ostream und der Verknüpfung habe ich nicht ganz kapiert.:(

getline ist ja die Sache das die Funktion nen char* erwartet aber bei Zahlen habe ich das ja nicht.
 
Genieße den Code, mit MinGW compiliert

C++:
//Zahlenannahme
#include <iostream>
using namespace std;

int main(){
    char Input[3] = {""};
    int Zahlen[10];

    for(int i = 0; i < 10;i++){
        cin.getline(Input, 3, ' ');
        Zahlen[i] = atoi(Input);
    }

    for(int i = 0;i < 10; i++){
        cout << Zahlen[i] << endl;
    }
    return 0;
}
du kannst die Zahlen einfach durch leerzeichen getrennt eingeben, hier maximal 2 Stellige, da die dritte stelle für '\0' gebraucht wird. Warum man am ende Enter drücken muss ist mir auch nicht ganz klar, aber der Code funktioniert.
 
Zuletzt bearbeitet von einem Moderator:
Danke sheel und Ryu1991 beide Dinge funktionieren, mal sehen welche Methode ich eleganter ausbauen kann.

Aber ich nehme an man kann es so nicht hinbekommen, dass man nach jedem 2ten Zeichen noch automatisch einen Trennstrich bekommt? Ist vielleicht auch etwas übertrieben formatiert dann ;)
 
Oder du schreibst deine Zahlen einfach alle in eine Zeile, liest diese in ein String ein, der lang genug ist, zerteilst diesen mit strtok aus string.h und wandelst jedes Token per sscanf("%d",&ivar) in eine Zahl um.
 
Zurück