15 Stimmen

Wird "\n" als ein oder zwei Zeichen betrachtet und kann es in einem char gespeichert werden?

Ich bin mir ziemlich sicher, dass der char Typ zum Speichern eines einzelnen ASCII-Zeichens dient, es sei denn, es wird ein Präfix hinzugefügt. Mit diesem Wissen verwende ich den std::string Typ, der mit oder enthalten ist, immer dann, wenn ich es benötige.

Wenn ich "\n" in einem std::string speichere und drucke, wird es als ein einzelnes Zeichen gezählt. Bedeutet das, dass ich den String in ein char passen kann, obwohl es anscheinend aus zwei Zeichen besteht?

27voto

Keith Thompson Punkte 240701

Das Zeichen für den Zeilenumbruch ist ein einzelnes (typischerweise 8-Bit) Zeichen. Es wird im Programmquelltext (entweder in einem Zeichenliteral oder in einem Zeichenkettenliteral) durch die zwei Zeichen \n dargestellt.

Also ist '\n' eine Zeichenkonstante, die ein einzelnes Zeichen, das Zeichen für den Zeilenumbruch, darstellt.

Andererseits (wie die Antwort von Paul Griffiths zeigt) ist "\n" (mit doppelten Anführungszeichen anstelle von einfachen Anführungszeichen) eine Zeichenkettenliteral, die einen Zeichenkettenwert darstellt. Diese Zeichenkette besteht aus zwei Zeichen, einem einzelnen '\n' Zeilenumbruchszeichen und einem '\0' Nullzeichen, das das Ende der Zeichenkette markiert.

8voto

Crowman Punkte 24049

Das Zeichen "\n" besteht aus zwei Zeichen, '\n' und '\0' - denn C-Style-Zeichenfolgen werden durch ein Nullzeichen terminiert, das in diesem Fall implizit ist - also nein, du kannst es nicht in ein einzelnes char passen. Du kannst offensichtlich ein '\n' in einem einzelnen char speichern, aber es wird ein einzelnes char bleiben, keine Zeichenfolge.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X