2013-10-22 43 views
0

我有一個大的字符串緩衝區,並且輸入流讀二進制文件的一部分到預先存在的basic_string對象

basic_string<uint8_t> *buf = ......; 
istream in = ......; 

什麼是讀取文件的一部分到字符串的最有效方式?假設0xE3CC爲0x1A481th字節。

這裏的IStream ::閱讀似乎不是一個答案,因爲它讀取到原始的char []。由於數據非常大,因此有一個臨時變量是有效的。

可悲的是,我沒有的C++ 0x,所以不能使用copy_n。你會建議什麼?謝謝。

+0

*「流::閱讀似乎不是一個答案,因爲它讀取到原始的char []。」 *進行串足夠大,然後通過'&BUF [0]',你是好去。 – jrok

+0

但是C++中的字符串保證連續存儲嗎? –

+0

@ user2139538:技術上 - 是的,請點擊此處閱讀:http://stackoverflow.com/questions/1986966/does-s0-point-to-contiguous-characters-in-a-stdstring –

回答

1
buf->resize(size); 
in.read(&((*buf)[0], size); 

順便說一句,你真的需要buf成爲一個指針嗎?