Wie bestimmt man die Umgebung newline 1 in C ++? Google liefert viele Ergebnisse für C # und .NET, aber ich habe keine Möglichkeit gesehen, dies für Nicht-CLI C ++ zu tun.
Zusätzliche Information: Ich muss ein const char*
für die Zeichen scannen.
1 Unter "Umgebung newline" meine ich \r\n
für Windows, \n
für Linux und \r
für Mac.
std::endl
fügt eine neue Zeile ein, die für das System geeignet ist. Sie können ein ostringstream
verwenden, um die Newline-Sequenz zur Laufzeit als Zeichenfolge zu bestimmen.
BEARBEITEN : * Siehe die folgenden Kommentare, warum das wahrscheinlich nicht funktioniert.
Wenn Sie wissen, dass Ihre Plattformen auf Windows, Mac und Unix beschränkt sind, können Sie vordefinierte Compiler-Makros ( hier ) verwenden >) um die Endline-Sequenz zur Kompilierzeit zu bestimmen:
%Vor% Die meisten Nicht-Windows- und Nicht-Apple-Plattformen sind eine Art von Unix-Variante, die \n
verwendet, daher sollten die obigen Makros auf vielen Plattformen funktionieren. Leider kenne ich keinen portablen Weg, um die Endline-Sequenz zur Kompilierzeit für alle möglichen Plattformen zu bestimmen.
Bei formatiertem Text-IO in C ++ (und C) ist das neue Zeilenzeichen immer '\n'
. Wenn Sie die Binärdarstellung einer neuen Zeile für einen bestimmten Plattform- und Dateimodus kennen möchten, öffnen Sie eine Datei im gewünschten Modus (z. B. Text oder Binär, UTF-8, UTF-16, MCBS usw.), schreiben Sie sie aus '\n'
, schließe es, öffne es erneut in Binärform, lies die gesamte Datei ein und finde heraus, wie die binäre Kodierung von '\n'
tatsächlich ist. Sie müssen möglicherweise auch das Zeichen end-of-file
berücksichtigen.
Im Allgemeinen mit einem #define. Aber für einfache Anwendungen wird das Öffnen einer Datei im "Textmodus" Ihnen helfen, was Sie brauchen.