ewo*_*wok 1 c++ iostream stream
我会再次尝试这个问题,但比上次更好.
我有一个程序从各个地方读取二进制数据,然后在我编写的类中操作它.数据最初将从其源(可能会有所不同)读取,然后写入流,并将该流传递到类中以供类处理.
我的挣扎是弄清楚如何创建iostream和写入/读取它.我已经查看了各个地方,并在cplusplus.com上阅读了参考资料,但我找不到一个如何创建的简单示例iostream.
基于我所读到的,这是我尝试的:
#include <iostream>
using namespace std;
int main(){
streambuf* sb;
iostream s(sb);
s.put('h'); //segfault
}
Run Code Online (Sandbox Code Playgroud)
坦率地说,我不知道为什么会出现这种情况,或者如何修复它,所以我要求有人告诉我如何正确创建一个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));
}
Run Code Online (Sandbox Code Playgroud)
关键是我需要流知道它何时为空,并在该点返回一个特殊值.我不能使用a stringstream,因为二进制数据可能包含不用于终止数据的空字符.
如果这iostream是错误的方法,请告诉我一个更好的选择.