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