Tit*_*ito 5 c++ stringstream ifstream
我有大量的c ++类从文件流中读取数据.功能看起来像这样.
bool LoadFromFile(class ifstream &file);
Run Code Online (Sandbox Code Playgroud)
我正在创建一个新的函数来从内存而不是文件中读取.所以我google了一下,一个istringstream似乎没有任何修改代码.
bool LoadFromData(class istringstream &file);
Run Code Online (Sandbox Code Playgroud)
现在我的问题是.我需要构造此流以从char数组中读取.该字符串不是以空值终止的,它是纯二进制数据,我得到了一个大小的整数.我尝试将其分配给字符串并从字符串创建流,但字符串在空字符后终止..并且数据被复制.
int size;
char *data;
string s = *data;
Run Code Online (Sandbox Code Playgroud)
如何在不复制数据的情况下从char数组指针创建字符串+指定指针数据的大小?除了字符串流,你知道其他任何解决方案吗?
写一个自己的basic_streambuf类!更多细节。。(这样你就可以在当前的内存上工作。)
从指针和大小创建字符串:(string str(data,data+size);它将复制数据)。
更重要的是:您应该根据以下内容重写您的函数istream:
bool LoadFromStream(istream &is);
Run Code Online (Sandbox Code Playgroud)
这样你就可以执行以下操作,因为两者都基于istringstream和(以后这个函数还可以支持 tcp 流...):ifstreamistream
ifstream file;
istringstream sstream;
LoadFromStream(file);
LoadFromStream(sstream);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2119 次 |
| 最近记录: |