Wird cin erkennen \n eingegeben von der Tastatur als ein newline-Zeichen?
Ich bin ein Anfänger für C++ also tut mir Leid, wenn diese Frage klingt dumm..
Habe ich dieses kleine Programm mir dabei helfen, vertraut mit den Eigenschaften von cin
:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string next;
cout<<"Enter your input.\n";
cin>>next;
cout<<next;
return 0;
}
Wenn ich tippte in \n
von der Tastatur, input, ich wurde wieder \n
.
Auch, wenn ich änderte die variable nächsten aus einem string ein Zeichen und gab es den gleichen Eingang wie oben, ich war wieder nur ein \
.
Meine Frage ist: Warum bin ich nicht zurück mit einer neuen Zeile statt? Nicht cin
erkennen \n
geben Sie aus der Tastatur ein newline-Zeichen? Oder ist es nur anwendbar auf cout
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
\n
ist eine escape-Sequenz in C++; wenn es angezeigt wird, in einer Zeichenkonstante oder ein string-literal, der aus zwei Zeichen bestehende Sequenz wird ersetzt durch das Zeichen für eine neue Zeile in den Standard-und basic encoding (fast immer 0x0A in modernen Systemen). C++ definiert eine Reihe von escape-Sequenzen, die alle mit a beginnen\
.Eingang zugeordnet ist, unterschiedlich, und in vielen Fällen, je nach Gerät. Beim Lesen von der Tastatur, die meisten Systeme Puffer eine volle Linie, und nur return-Zeichen aus, wenn Sie die Enter-Taste gedrückt wurde; was er Enter-Taste sendet ein C++ - Programm kann variieren, und ob die Datei geöffnet im text-Modus oder im binären Modus kann einen Unterschied machen als gut—im text-Modus, die C++ - Bibliothek verhandeln sollen mit dem Betriebssystem, um sicherzustellen, dass Sie die enter-Taste führt immer in die einzelnen Zeichen vertreten durch
\n
. (std::cin
ist immer geöffnet im text-Modus.) Ob die Tastatur-Treiber hat etwas besonderes mit\
oder nicht, hängt von der Fahrer, aber die meisten nicht. C++ nie etwas besonderes mit\
bei der Eingabe von einer Tastatur (und\n
hat keine Besondere Bedeutung in C++ - source-code außerhalb von string-Literale und Zeichen-Konstanten).\n
stellen Sie nicht dar newline in die Ausgabe. Es stellt Zeilenumbruch in string-Literale und Zeichen-Konstanten. Wenn Sie die Ausgabe von zwei Zeichen enthalten, die` and
n, successively, you get two characters,
` undn
in den Ausgabe-stream.Ob Sie Ihr Programm zu erkennen
\n
als ein neue-Zeile-Zeichen am Eingang können Sie check this out:https://stackoverflow.com/a/2508814/815812
Was Michael sagen, ist vollkommen richtig.
Können Sie versuchen, in ähnlicher Weise.
Technisch gesehen hängt dies davon ab, Dinge außerhalb deines Programms, aber nur dann, wenn Ihr terminal überschreitet einfach die einzelnen bytes entsprechend der '\' und 'n' - Zeichen (was ich denke, jeder vernünftige wird), dann das Verhalten, das Sie beobachten, zu erwarten.
"\n" ist nichts anderes als eine Verknüpfung Hinzugefügt, um die Programmiersprache und-Umgebung, lassen Sie mehr leicht zu vertreten, der Begriff der ASCII-return-Taste. Es ist nicht ein Zeichen selbst, nur einen Befehl zu sagen, das Programm zum generieren eines nicht-druckbaren Zeichen entspricht, drücken Sie die Enter-Taste.
Sagen wir, du bist im Editor, oder was auch immer und Sie die Tab-Taste drücken. Es Registerkarten über einem Punkt. Die Eingabe von "\t", nur tritt das Zeichen "\" und "t". Intern, wer schrieb den Editor zu sagen hatte, was er tun soll, wenn der Benutzer gedrückt Registerkarte, und er Tat dies mit dem Merksatz wie
"\n"
der compiler interpretiert und der Variablen newline-Zeichen enthalten.