2011-01-27 19 views
4

我以爲一個人就夠了。但是,如果您只需使用CR0D),那麼做什麼要點CRLF0x0D0A)?通常情況下,每當我使用的字符串(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)。


編輯:如果這是在Programmers.SE?

+5

在C++中,你不應該使用 - 使用std :: endl。 – 2011-01-27 22:56:08

+0

CRLF的作用在於Windows用戶。 – BoltClock 2011-01-27 23:00:25

回答

14

請記住,這些代碼都來自舊的電傳打字機。這些打印機是有效的打字機:既需要通過一條線(換行)將紙張前移,又需要將打印頭(在滑架上)返回到紙張的左側(回車)。

0

您在Windows上使用這兩個因爲這是Windows上的自定義。就這麼簡單。但是你只能寫入用於Windows的文件。

1

Windows/Unix/old Mac系統有各種不同的寫文本文件(不是二進制文件)的新行。如果你在windows下編程,那麼在二進制模式下,你會閱讀(你可能想寫)CRLF結尾。在類Unix系統下,它只是LF。

如果您處理您自己的數據格式......您選擇哪種方式並不重要。這一切都僅僅取決於你想要對字符串做什麼以及你從哪裏得到它。

1

有些系統像UNIX和OSX只是使用換行符,DOS使用了額外的回車符以便與電傳打字機兼容,並且Windows繼承了該體系結構。