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