Тот факт, что у вас есть символ '\ r', вряд ли сам вызовет ошибку сегмента.
Другие загадки:
Если вы открываете файл для записи в двоичном формате, то вывод будет именно тем, что вы выводите.
Если вы открываете файл для записи в тексте (по умолчанию), вывод будет таким же, за исключением '\ n', который преобразуется в последовательность завершения строки (подробнее об этом ниже).
Если вы открываете файл для чтения в двоичном виде, то ввод в точности соответствует тому, что находится в файле.
Если вы открываете файл для чтения в тексте (по умолчанию), то ввод такой же, как и у файла, за исключением последовательности завершения строки, которая преобразуется в символ '\ n'.
В нормальных ситуациях это нормально. Но каждая платформа, похоже, имеет свое определение последовательности завершения строки. Таким образом, если вы пишете текстовый файл на MAC, то читаете его на ПК, он может работать не так, как ожидалось.
Так что, если вы не выполните одно из следующих действий, все должно работать.
- Запись в двоичном формате / чтение в тексте
- Запись в тексте / Чтение в двоичном формате
- Запись файла и OS1 / Чтение файла в OS2
- Если OS1 / OS2 не имеют одинаковую последовательность завершения строки.
Примечание 1: если вы записываете файл в двоичном режиме. Вы не должны использовать getline (), который предполагает текстовый режим (он ожидает, что последовательность завершения строки разделит строки). Sub Note: Для педантиков (ов) getline () может работать в двоичном формате, но это, вероятно, зависит от деталей реализации, и вы не должны считать его переносимым.
Примечание 2: Вышеприведенное предполагает, что вы не установили специализированный локальный узел, который реализует фасет, преобразующий данные потока на лету.