gpt4 book ai didi

C++ 转换文件流函数以使用字符串流

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:36:31 28 4
gpt4 key购买 nike

我有很多从文件流中读取数据的 C++ 类。函数如下所示。

bool LoadFromFile(class ifstream &file);

我正在创建一个新函数来从内存而不是文件中读取。所以我四处搜索,istringstream 似乎可以在不对代码进行任何修改的情况下实现这一目的。

bool LoadFromData(class istringstream &file);

现在我的问题是。我需要构造此流以从 char 数组中读取。该字符串不是以 null 结尾的,它是纯二进制数据,我得到了一个具有大小的整数。我尝试将它分配给一个字符串并从一个字符串创建一个流,但是该字符串在一个空字符后终止......并且数据被复制。

int size;
char *data;
string s = *data;

如何在不复制数据 + 指定指针数据大小的情况下从 char 数组指针创建字符串?除了字符串流,您还知道其他解决方案吗?

最佳答案

写一个自己的 basic_streambuf 类! More details. . (这样你就可以处理当前的内存。)

从指针和大小创建字符串:string str(data,data+size);(它将复制数据)。

关于更多的事情:你应该根据 istream 重写你的函数:

bool LoadFromStream(istream &is);

这样你就可以做下面的事情了,因为istringstreamifstream都是基于istream的(以后这个函数也可以支持tcp流...):

ifstream file;
istringstream sstream;

LoadFromStream(file);
LoadFromStream(sstream);

关于C++ 转换文件流函数以使用字符串流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7484159/

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