String aus Eingabe lesen
-
Hallo, Leute
ich steh gerade mal wieder total auf dem Schlauch. Ich habe bereits eine dreiviertelstunde hier und bei google danach gesucht, doch meine Fähigkeit, die falschen Suchbegriffe einzugeben und die richtigen Treffer zu übersehen, ist mal wieder sehr heftig am wirken. Ich bekomme langsam das Gefühl, ich hätte wieder irgendeine Halluzination gehabt, als ich neulich über eine funktion stolperte, mit der man (ähnlich wie mit getchar()) nicht einzelne Zeichen sondern ganze Zeichenketten aus der Usereingabe lesen kann (so wie Basics INPUT-Befehl). Ich kann mich einfach nicht mehr daran erinnern...
-
in C: scanf("%s",text);
in C++: cin.getline(text);
-
Danke, das trifft es schon ziemlich genau. Bist du dir sicher, dass es sowas nicht auch ohne begrenzung gibt?
-
#include <iostream> #include <string> using namespace std; ... string line; getline(cin,line);
MfG SideWinder
-
was meinst du mit "ohne Begrenzung"? Bei printf könntest du noch explizit angeben, welche(s) Zeichen er als Stringende verwenden soll (z.B. mit "%[\n]" das newline), bei getline() kannst du zusätzlich Maximallänge und Endezeichen angeben.
Edit: Oder du kannst "copy(istream_iterator<char>(myfile),istream_iterator<char>(),back_inserter(mystring));" verwenden, um den gesamten Inhalt einer Datei in einen String zu lagern
-
SideWinder schrieb:
#include <iostream> #include <string> using namespace std; ... string line; getline(cin,line);
Das würde mich jetzt mal interessieren, wie das jetzt geht, die Zeile nur bis zu einem bestimmten Zeichen oder für eine bestimmte Länge einzulesen. Hab erstmal meine MS Visual-Hilfe bemüht bevor ich hier schon wieder rumfrage, aber die ist zu blöd für mich oder ich für sie
-
http://cppreference.com/cppio/getline.html hilft auch weiter:
getline(cin,line,'\t'); //liest alles bis zum nächsten \t (Tabulator) line.resize(count) cin.getline(line.c_str(),count); //liest maximal "count" Zeichen cin.getline(line.c_str(),count,'\t'); //liest maximal "count" Zeichen (Abbruch mit '\t')
-
Dankeschön, den link werd ich mir merken...