
Herzogin
#include <string>
std::string input;
std::cin >> input;
Der Benutzer möchte “Hello World” eingeben. Aber cin
scheitert am Leerzeichen zwischen den beiden Wörtern. Wie kann ich machen cin
das Ganze aufnehmen Hello World
?
Ich mache das eigentlich mit Structs und cin.getline
scheint nicht zu funktionieren. Hier ist mein Code:
struct cd
{
std::string CDTitle[50];
std::string Artist[50];
int number_of_songs[50];
};
std::cin.getline(library.number_of_songs[libNumber], 250);
Dies ergibt einen Fehler. Irgendwelche Ideen?

Leichtigkeitsrennen im Orbit
Es „versagt“ nicht; es hört einfach auf zu lesen. Es sieht ein lexikalisches Token als eine “Zeichenfolge”.
Verwenden std::getline
:
#include <string>
#include <iostream>
int main()
{
std::string name, title;
std::cout << "Enter your name: ";
std::getline(std::cin, name);
std::cout << "Enter your favourite movie: ";
std::getline(std::cin, title);
std::cout << name << "'s favourite movie is " << title;
}
Beachten Sie, dass dies der Fall ist nicht das Gleiche wie std::istream::getline
die mit C-Stil funktioniert char
Puffer statt std::string
S.
Aktualisieren
Ihre bearbeitete Frage hat wenig Ähnlichkeit mit dem Original.
Du hast es versucht getline
In ein int
, kein Zeichenfolgen- oder Zeichenpuffer. Die Formatierungsoperationen von Streams funktionieren nur mit operator<<
und operator>>
. Verwenden Sie entweder einen von ihnen (und optimieren Sie ihn entsprechend für die Eingabe mehrerer Wörter) oder verwenden Sie getline
und lexikalisch umwandeln in int
nach dem Fakt.

Peter
Sie müssen verwenden cin.getline()
:
char input[100];
cin.getline(input,sizeof(input));

Entwickler gr
Die Standardbibliothek bietet eine Eingabefunktion namens ws
, die Leerzeichen aus einem Eingabestream verbraucht. Sie können es wie folgt verwenden:
std::string s;
std::getline(std::cin >> std::ws, s);
Verwenden :
getline(cin, input);
Die Funktion ist in zu finden
#include <string>
Sie möchten die .getline-Funktion in cin verwenden.
#include <iostream>
using namespace std;
int main () {
char name[256], title[256];
cout << "Enter your name: ";
cin.getline (name,256);
cout << "Enter your favourite movie: ";
cin.getline (title,256);
cout << name << "'s favourite movie is " << title;
return 0;
}
Habe das Beispiel genommen Hier. Weitere Informationen und Beispiele finden Sie hier.
DER C-WEG
Sie können verwenden gets
Funktion gefunden in cstdio (stdio.h in c):
#include<cstdio>
int main(){
char name[256];
gets(name); // for input
puts(name);// for printing
}
DER C++-WEG
gets
wird in c++11 entfernt.
[Recommended]:Sie können verwenden getline(cin,name) welches ist in string.h
oder cin.getline(name,256) welches ist in iostream
selbst.
#include<iostream>
#include<string>
using namespace std;
int main(){
char name1[256];
string name2;
cin.getline(name1,256); // for input
getline(cin,name2); // for input
cout<<name1<<"\n"<<name2;// for printing
}

Aufbau erfolgreich
Wie lese ich eine Zeichenfolge aus der Eingabe?
Sie können ein einzelnes, mit Leerzeichen abgeschlossenes Wort mit lesen std::cin
so was:
#include<iostream>
#include<string>
using namespace std;
int main()
{
cout << "Please enter a word:\n";
string s;
cin>>s;
cout << "You entered " << s << '\n';
}
Beachten Sie, dass es keine explizite Speicherverwaltung und keinen Puffer mit fester Größe gibt, der möglicherweise überlaufen könnte. Wenn Sie wirklich eine ganze Zeile (und nicht nur ein einzelnes Wort) benötigen, können Sie dies tun:
#include<iostream>
#include<string>
using namespace std;
int main()
{
cout << "Please enter a line:\n";
string s;
getline(cin,s);
cout << "You entered " << s << '\n';
}
10019900cookie-checkstd::cin Eingabe mit Leerzeichen?yes
Sie sollten Ihre Fragen nicht bearbeiten, um solche neuen Fragen zu stellen. Der Grund dafür ist, dass die Leute bereits Antworten auf Ihre ursprüngliche Frage gegeben haben und diese Antworten jetzt aus dem Zusammenhang gerissen zu sein scheinen. Wenn Ihre ursprüngliche Frage bereits beantwortet wurde, beginnen Sie einfach mit einer neuen Frage, um Verwirrung zu vermeiden.
– Peter
30. April 2011 um 1:26 Uhr
Es ist nach einer kleinen Untersuchung offensichtlich, aber könnten Sie bitte eine Deklaration für die Variable hinzufügen
library
damit klar ist, dass es sich um den Typ handeltcd
– Candsie
30. April 2011 um 1:30 Uhr
Entschuldigung Leute, das war in Eile, ich werde das reposten.
– Herzogin
30. April 2011 um 1:38 Uhr
Wenn Sie es als Ersatz erneut veröffentlichen möchten, markieren Sie die Frage bitte zum Löschen durch einen Mod.
– Leichtigkeitsrennen im Orbit
30. April 2011 um 2:03 Uhr
In Ihrem Update versuchen Sie es
getline
In einint
. Das schlägt natürlich fehl.– Ben Voigt
28. August 2013 um 18:38 Uhr