我有大量的C++類從文件流中讀取數據。這些功能看起來像這樣。C++轉換文件流功能使用字符串流
bool LoadFromFile(class ifstream &file);
我創建了一個新的函數來讀取內存而不是文件。所以我搜索了一下,一個istringstream似乎沒有任何修改代碼的伎倆。
bool LoadFromData(class istringstream &file);
現在我的問題是。我需要構造這個流從char數組讀取。該字符串不是空終止的,它是純二進制數據,我得到了一個大小的整數。我試着將它分配給一個字符串並從一個字符串中創建一個流,但是字符串在空字符後終止..並且數據被複制。
int size;
char *data;
string s = *data;
如何從char數組指針創建字符串而不復制數據+指定指針數據的大小?你知道任何其他的解決方案,而不是一個stringstream嗎?
因此,澄清:你的問題是你的'char *'不是空的終止,因此你無法構建一個'std :: string'嗎? – quasiverse
是的,這基本上是問題。我也想知道是否有人知道更好的解決方案。 – Tito
這裏也許是解決方案:http://stackoverflow.com/questions/2079912/simpler-way-to-create-ac-memorystream-from-char-size-t-without-copying-th(一個版本使用提升,在副本上的數據和一個只適用於gcc) –