Portable Möglichkeit, den Linientrenner der Plattform zu bestimmen

Verschiedene Plattformen verwenden unterschiedliche Zeilentrennungsschemata (LF, CR-LF, CR, NEL, Unicode-Zeilentrenner usw.). C ++ - (und C-) Laufzeitbibliotheken machen vieles davon für die meisten Programme transparent, indem sie @ konvertiere'\n' zu und von der nativen neuen Zeilencodierung der Zielplattform. Aber wenn Ihr Programm die tatsächlich verwendete Bytesequenz ermitteln muss, wie können Sie das dann portabel machen?

Die beste Methode, die ich mir ausgedacht habe, ist:

Schreibe eine temporäre Datei im Textmodus mit nur'\n'assen Sie die Laufzeit die Übersetzung durchführeLesen Sie die temporäre Datei im Binärmodus zurück, um die tatsächlichen Bytes anzuzeigen.

Das fühlt sich kludig an. Gibt es eine Möglichkeit, auf temporäre Dateien zu verzichten? Ich habe stattdessen Stringstreams ausprobiert, aber die Laufzeit übersetzt eigentlich nicht'\n' in diesem Zusammenhang (was Sinn macht). Macht die Laufzeit diese Informationen auf andere Weise verfügbar?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage