2012-08-27 68 views
33

我一直聽到關於流,更具體的文件流。C++:什麼是流

那麼它們是什麼?

它在內存中有位置嗎?

它是否包含數據?

它只是文件和對象之間的連接嗎?

任何幫助,將不勝感激

回答

39

術語流是一種結構,它允許您發送或接收未知的字節數的抽象。比喻是一股水流。您可以根據需要獲取數據,或根據需要發送數據。將其與例如具有固定的已知長度的數組對比。

使用流的示例包括讀取和寫入文件,通過外部連接接收或發送數據。然而,術語是通用的,並沒有說明具體的實現。

+2

因此它就像一條從源頭流向目的地的「河流」。而河流本身就是河流 –

+0

從概念上講,你可以這樣說。 –

+1

所以我可以考慮一個流作爲從控制檯帶來的數據(例如)數據從變音杆 –

8

IOStreams是一個用於定義輸入和輸出功能的前端接口(std::istreamstd::ostream)。這些流還存儲格式化選項,例如用於整數輸出的基礎,併爲所有類型的自定義保存一個std::locale對象。它們最重要的組成部分是一個指向std::streambuf的指針,該指針定義瞭如何訪問字符序列,例如文件,字符串,屏幕區域等。特別是對於文件和字符串,提供了特殊的流緩衝區,提供了流基類以便於創建。描述IOStreams庫的整個設施幾乎可以填滿整本書:在C++ 2003中,大約一半的庫部分專門用於流相關功能。

2

文件系統被設計爲具有各種各樣的設備,包括終端,磁盤驅動器,磁帶驅動器等。儘管每個設備不同的是,文件系統將每個成邏輯設備稱爲流工作。流是獨立於設備的,因此可以使用相同的函數來寫入磁盤文件和磁帶文件。在更多技術術語中,流提供了正在使用的編程器和實際器件之間的抽象。

5

流是線性隊列,它將文件連接到程序並維護兩個方向上的數據流。這裏,源是任何文件,I/O設備,硬盤,CD/DVD等

基本上流是如果兩個類型1.Text流2.Binary流

文本流:這是序列字符排成一行,每行都以新行結尾(unix)。

二進制流:它是數據,因爲它在計算機的主內存中進行了內部編碼,沒有任何修改。

+0

我在2012年問過這個問題:「D很奇怪,現在看它仍然受到關注。謝謝 –

+0

這個答案更容易理解! –