fstream中的readsome遇到的問題

2021-04-13 08:04:08 字數 1051 閱讀 9455

今天用fstream中的readsome去讀取檔案到buffer中。碰到了bug.
因為不知道檔案的大小,擔心超出buffer的容量或者不足本以為用readsome是可以實現的,不過除錯發現readsome

總是返回0,什麼都沒有讀到。後來查了一下下面的資料

1.由乙個bug看ifstream中read()與readsome()的區別

http://www.softat.org/viewthread.php?tid=59086

2.輸入流的讀取方法read()、readsome()比較

http://www.cnblogs.com/kb/archive/2005/08/15/215346.html

具體說說自己理解的原因

在記憶體快的時候readsome和read是有著相同的效果的,所以在msdn中的readsome的例子一般都是使用了記憶體中的流

來實現,可是在檔案中,檔案流讀取的時候首先要把檔案從硬碟讀取到乙個記憶體中的buffer1)中,每一次呼叫

read或者readsome是從記憶體中讀取資料

read和readsome的不同點在於,read每次讀完記憶體後,如果還能往輸出記憶體buffer2(2表示和1的區別)中寫入,還會更新

buffer1(從檔案中讀取後輸入到buffer1中),而readsome僅僅對buffer1中的資料進行讀取。並不會重新整理buffer1

所以我們可以看出在fstream中readsome的使用時不合適的

我們因該使用read,對於readsome中返回的值,我們可以在read後用gcount函式獲得。具體**如下

ifstream doc_file_stream;

doc_file_stream.open(

"c:/test.doc

",::std::ios::

in);

char

buffer[

1024

];do

while

(true

);doc_file_stream.close();

fstream的基礎用法

在c 中,有乙個stream這個類,所有的i o都以這個 流 類為基礎的,包括我們要認識的檔案i o,stream這個類有兩個重要的運算子 1 插入器 向流輸出資料。比如說系統有乙個預設的標準輸出流 cout 一般情況下就是指的顯示器,所以,cout write stdout 就表示把字串 writ...

fstream如何讀取檔案中的數字?C

我終於用自己薄弱的c語言基礎把這幾個數字給讀出來了。首先,我們有這樣乙個檔案 0 716 202 930 0 714 205 938 每個數字之間有空格,每行之間有 n 補充乙個 n r區別,雖然這次沒用到 第一步當然是給他讀出來,存在哪呢,存在乙個char的陣列裡吧。char buffer 256...

fstream的一點用法

這幾天做學校的的作業,用到了輸入輸出流。發現自己真的什麼都不會,看了很多資料。最後覺得用最簡單的。標頭檔案是.用法很簡單,建立乙個輸入輸出流的物件,然後再對它進行操作就可以了。例如,我要把一條資訊輸出到文字檔案裡,就可以用 那如果從文字裡讀出來要怎麼辦?首先還是建立乙個輸入輸出流物件,然後,最重要的...