Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.202.167] |
|
Сообщ.
#1
,
|
|
|
Есть класс:
class my_ostream: public ofstream{}; Создаю поток: my_ostream os(...); int Dom=0; Пишу: os<<Dom<<'\r'<<'\n'; В файле на диске получаю (смотрю с помощью Far в шестнадцатиричном коде): 30 0D 0D 0A Это <<'\r'<<'\r'<<'\n' Откуда лишний символ <<'\r' ? |
Сообщ.
#2
,
|
|
|
Виндовс. Он сам добавляет \r при выводе \n. Ну или собранная для виндовса системная библиотека. Чтобы один и тот же исходник (в котором перевод строки это просто \n) давал одинаковый видимый результат (наблюдаемое поведение, если хотите) при сборке на разных системах.
|
Сообщ.
#3
,
|
|
|
Цитата Dushevny @ Виндовс. Он сам добавляет \r при выводе \n. Ну или собранная для виндовса системная библиотека. Чтобы один и тот же исходник (в котором перевод строки это просто \n) давал одинаковый видимый результат (наблюдаемое поведение, если хотите) при сборке на разных системах. Я просмотрел файл созданный этой же программой в 1997 году, и оказалось, что в нем только 2 символа, При выводе '\n', '\r' не добавлялось. Если добавляет виндовс, то с какого времени это началось? Изучение вопроса показало, что и файлах 2017 года, лишний символ не добавлялся! Но не помню какая версия нвиндовс тогда была. |