我打開二進制讀的istream:的IStream ::瞭解不填充字符數組正確
ifstream file;
file.open (this -> fileName.c_str(), ios::binary);
然後我嘗試讀取,而文件是好的,成字符數組指針:
char data[numberOfBytes];
char * p = data;
file.read(p, numberOfBytes);
cout << "size: " << sizeof(p) << end
cout << "gcount: " << file.gcount() << endl;
cout << "strlen: " << strlen(p) << endl;
對於上述每個輸出都不相同。 Sizeof()產生4是char指針的正確大小。 gcount()產生任何值numberOfBytes。但是,strlen()會返回其他一些較小的數字。所以,儘管read()已經移動了istream指針numberOfBytes,但是char數組中沒有這些字節。我想要char數組中的所有這些字節。我如何實現這一目標?到底是怎麼回事?
以下所有答案都是正確的。這是我的問題:我通過udp套接字發送數據數組。在接收端,我不得不重建(因此寫入istream),但我不知道有多少字節。我只是將這些信息添加到我的數據包結構中,現在一切都很好,謝謝! – 2012-03-01 07:50:49