Immer wenn ich eine Variable mit cin
eingebe, geht sie nach einem Klick auf enter automatisch in eine neue Zeile. Ich bin neugierig, ob es eine Möglichkeit gibt, cin
zu verwenden, ohne dass es in eine neue Zeile wechselt. Ich möchte cin
und cout
mehrere Dinge in der gleichen Zeile in der Eingabeaufforderung. Ist das möglich?
Sie können cin
oder keine anderen Standardeingaben dafür verwenden. Es ist jedoch durchaus möglich, den gewünschten Effekt zu erzielen. Ich sehe, dass Sie unter Windows mit Visual Studio arbeiten, also können Sie beispielsweise _getch verwenden. Hier ist ein Beispiel, das bis zum nächsten Leerzeichen liest und das Ergebnis in einer Zeichenfolge speichert.
#include <conio.h> // for _getch
std::string get_Word()
{
std::string Word;
char c = _getch();
while (!std::isspace(c))
{
Word.Push_back(c);
std::cout << c;
c = _getch();
}
std::cout << c;
return Word;
}
Es ist nicht sehr gut. Zum Beispiel behandelt es die nicht druckende Zeicheneingabe nicht sehr gut. Aber es sollte Ihnen eine Vorstellung davon geben, was Sie tun müssen. Sie könnten auch an den Windows API-Tastaturfunktionen interessiert sein.
Wenn Sie ein größeres Publikum wünschen, sollten Sie in einige plattformübergreifende Bibliotheken wie SFML oder SDL schauen.
sie können auch Platz für die Eingabe verwenden, anstatt einzugeben, etwa wie folgt:
cin >> a >> b >> c;
und als Eingabe geben Sie ein
10 20 30
dann
a=10
b=20
c=30
Wie andere bemerkt haben, können Sie dies nicht mit cin
machen, aber Sie könnten es mit getchar()
tun. Was müsstest du tun, ist:
getchar()
(z. B. indem Sie es zum Ende einer string
hinzufügen, wenn es eingelesen wird) und dann' '
-Zeichen in der Eingabe, wenn Sie in int
- oder double
-Werten lesen) int
, double
usw.)Die robuste Handhabung von Fehlern wäre kompliziert, daher habe ich keinen Code dafür geschrieben, aber Sie können den Ansatz sehen, den Sie verwenden könnten.
Ich glaube nicht, dass man mit cin erreichen kann, was man will. Was Sie tun können, ist, alle Ihre Eingaben in eine Zeile mit einem Trennzeichen Ihrer Wahl zu schreiben und die Eingabezeichenfolge zu parsen.
Es ist nicht möglich. Um @Bo Persson zu zitieren, handelt es sich nicht um etwas, das von C++ gesteuert wird, sondern um das Konsolenfenster.
verwenden Sie einfach die gotoxy-Anweisung. Sie können 'Enter' drücken und Werte in derselben Zeile eingeben, um z. in der Eingabe einer 3 * 3-Matrix:
'#include<iostream.h>
#include<conio.h>
void main()
{clrscr();
int a[20][20],x,y;
cout<<"Enter the matrix:\n ";
for(int r=2;r<7;r+=2)
for(int c=2;c<7;c+=2)
{gotoxy(c,r);
cin>>a[r][c];
}
getch();}'
Ich kann nicht kommentieren, aber wenn Sie Leerzeichen zwischen ganzen Zahlen lassen, können Sie den gewünschten Effekt erzielen. Dies funktioniert auch mit cin
.
int a, b, c;
cin>>a; cin>>b; cin>>c;
Wenn Sie Ihre Werte als 10 20 30
eingeben, werden sie in a, b bzw. c gespeichert.