На разных платформах используются разные схемы разделителя строк (LF, CR-LF, CR, NEL, Unicode LINE SEPARATOR и т. д.). Библиотеки времени выполнения C++ (и C) делают многое из этого прозрачным для большинства программ, преобразуя '\n' в собственную кодировку новой строки целевой платформы и из нее. Но если вашей программе необходимо определить фактическую используемую последовательность байтов, как вы можете сделать это портативно?
Лучший метод, который я придумал, это:
- Запишите временный файл в текстовом режиме, добавив в него только '\n', позволяя среде выполнения выполнить перевод.
Прочитайте временный файл в двоичном режиме, чтобы увидеть фактические байты.
Это кажется неуклюжим. Есть ли способ сделать это без временных файлов? Вместо этого я попробовал строковые потоки, но среда выполнения на самом деле не переводит '\n' в этом контексте (что имеет смысл). Предоставляет ли среда выполнения эту информацию каким-либо другим способом?
Подробнее здесь:
https://stackoverflow.com/questions/275 ... -separator