Multi-line-stdin - C++
Also, wenn ich ein Programm haben, das dauert stdin wie
1
5
2
4
Wie genau kann ich gehe durch jede Zeile und sagen-print, der Wert, Das ist es, was im denken:
#include <iostream>
using namespace std;
int main()
{
while ( //input has ended//) {
cout << //current line//
//increment to next line//
}
return 0;
}
Ist es so oder nicht?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dem Muster, das ich mag, ist:
Als in den anderen Antworten können Sie geben
CTRL+Z
senden Sie eineEOF
zuSTDIN
. WennSTDIN
ist ein Rohr, dannEOF
gesendet wird, wenn der stream keine Daten mehr.Speichern in einen Vektor:
Wenn Sie möchten, dass ein C-Stil-array (obwohl ich empfehlen würde
std::vector
:std::vector<Type> inputs(std::istream_iterator<Type>(std::cin), std::istream_iterator<Type>());
Ist der einfachste Weg, es zu tun wie diese (ähnlich wie vorgeschlagen wurde, aber die .fail() und .eof() Funktionen von std::istream sollte normalerweise nicht verwendet werden, wie, dass):
Können Sie eine Ende-Bedingung wie 0, wenn Sie das Lesen von der console. Wenn Benutzer 0 wird es am Ende unter input.
Wie etwa
std::cin >> std::cout.rdbuf();
? Es wird am Ende bei der Eingabe EOF mittels STRG-Z oder so ähnlich. Hier ist ein Beispiel:Eingang:
Ausgabe:
Speichern Sie in einem array und drucken Sie später genauso gut funktioniert: