2011-01-27 3 views
4

Я бы подумал, что этого достаточно. Но что делать CRLF (0x0D0A), когда вы можете просто использовать CR (0D)? Обычно, когда я использую строки (C++), я делаю это:В чем смысл использования * обоих * Возврат каретки и линейные каналы?

myString = "Test\nThis should be a new line!\nAnother linefeed."; 

ПРИМЕЧАНИЕ: Для ++ программистов-C, не являющихся читающих это, "\n" является перевод строки (0x0A).

Но я должен действительно делать это:

myString = "Test\r\nThis should be a new line!\r\nAnother carriage return/linefeed pair."; 

ПРИМЕЧАНИЕ: "\r" означает возврат каретки (0x0D).


EDIT: Если это будет на Programmers.SE?

+5

В C++ вы не должны использовать ни один из них - используйте std :: endl. –

+0

Точка CRLF предназначена для пользователей Windows. – BoltClock

+1

@PaulR: Использование endl идентично использованию \ n плюс промывка. Нет никакой переносимости или другого преимущества для endl. –

ответ

14

Помните, что эти коды были получены из старых машин Teletype. Это были фактически пишущие машинки: необходимо было как продвигать бумагу по линии (линиям), так и возвращать печатающую головку (на каретке) в левую сторону бумаги (возврат каретки).

+1

Я всегда удивлялся, но никогда не спрашивал – tbridge

0

Используется как в Windows, так и в Windows. Это так просто. Но вы пишете только файлы, предназначенные для Windows.

1

Системы Windows/Unix/old Mac имеют разные способы записи новых строк в текстовые файлы (не бинарные). Если вы программируете под окнами, то в двоичном режиме вы будете читать (и вы, вероятно, хотите писать) окончания CRLF. В unix-подобных системах это будет просто LF.

Если вы имеете дело со своими собственными форматами данных ... это не имеет большого значения, какой способ вы выберете. Все это действительно зависит только от того, что вы хотите сделать со строкой и откуда вы ее взяли.

1

Некоторые системы, такие как UNIX и OSX, используют только линейный перевод, DOS использовали дополнительный возврат каретки, чтобы быть совместимыми с телетайпами, и Windows унаследовала архитектуру.

 Смежные вопросы

  • Нет связанных вопросов^_^