我会试着再次问这个问题,但比上次更好。在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),而不是试图学习语言从随机网站划伤。你应该有更大的成功! –
你是对的,这是一个假设,所以很抱歉。但上面的代码似乎有基本的错误,比如将未初始化的指针作为参数传递给构造函数... –