我會試着再次問這個問題,但比上次更好。在C++中創建一個iostream對象
我有一個程序從各個地方讀取二進制數據,然後在我編寫的類中對其進行處理。數據將從源代碼中讀取(可能會有所不同),然後寫入流中,並將該流傳遞到類中以供類處理。
我的努力與搞清楚如何創建iostream
並寫入/讀取它。我曾在不同的地方看過,並在cplusplus.com上閱讀過參考文獻,但我找不到一個簡單的例子來說明如何創建iostream
。
根據我讀過,這裏是我的嘗試:
#include <iostream>
using namespace std;
int main(){
streambuf* sb;
iostream s(sb);
s.put('h'); //segfault
}
坦率地說,我不知道爲什麼它的段錯誤,或如何解決它,所以我要求別人來告訴我如何正確地創建一個iostream
對象,最終,我將能夠執行類似下面的:
void printByN(iostream s, n){
while (s.peek() != eof()){ // I'm not sure this is correct. need help with that too
char buf [n];
s.read(&buf, n);
cout << buf << endl;
}
}
int main(){
//create iostream s;
char* buf = "hello there my friend";
s.write(buf, strlen(buf));
}
關鍵是我需要的數據流知道什麼時候是空的,並且在返回一個特殊值那一點。我無法使用stringstream
,因爲二進制數據可能包含空字符,而這些字符並不意味着要終止數據。
如果iostream
是這樣做的錯誤方法,請讓我知道一個更好的選項。
我會推薦一個[體面的介紹性C++書](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list),而不是試圖學習語言從隨機網站劃傷。你應該有更大的成功! –
你是對的,這是一個假設,所以很抱歉。但上面的代碼似乎有基本的錯誤,比如將未初始化的指針作爲參數傳遞給構造函數... –