Ermitteln des Newline-Zeichens für die Umgebung, in der ein C ++ - Programm kompiliert wird

8

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.

    
Seth Carnegie 28.07.2011, 19:49
quelle

3 Antworten

6

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.

%Vor%

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.

    
Emile Cormier 28.07.2011, 19:55
quelle
4

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.

    
MSN 28.07.2011 20:19
quelle
1

Im Allgemeinen mit einem #define. Aber für einfache Anwendungen wird das Öffnen einer Datei im "Textmodus" Ihnen helfen, was Sie brauchen.

    
Andrea Bergia 28.07.2011 19:53
quelle

Tags und Links