gpt4 book ai didi

c++ - 在 C++ 中创建一个 iostream 对象

转载 作者:行者123 更新时间:2023-11-30 01:24:04 25 4
gpt4 key购买 nike

我会再试一次,但比上次好。

我有一个程序可以从不同的地方读取二进制数据,然后在我编写的类中对其进行操作。数据最初将从它的来源(可能会有所不同)读取,然后写入流,并且该流将传递到类中以供类处理。

我的困难在于弄清楚如何创建一个 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 是执行此操作的错误方法,请告诉我更好的选择。

最佳答案

stringstream 正是您想要的。 C++ 字符串可以包含嵌入的空字符 (\0)。不信,try it .

iostream 实际上是一个抽象基类,本身没有实际功能。您不应该直接创建 iostream 的实例。

关于c++ - 在 C++ 中创建一个 iostream 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14142649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com