【发布时间】:2011-09-20 11:09:39
【问题描述】:
我有很多从文件流中读取数据的 c++ 类。函数如下所示。
bool LoadFromFile(class ifstream &file);
我正在创建一个从内存而不是文件读取的新函数。所以我用谷歌搜索了一下,一个 istringstream 似乎可以做到这一点,而无需对代码进行任何修改。
bool LoadFromData(class istringstream &file);
现在我的问题是。我需要构造这个流以从 char 数组中读取。该字符串不是以空值结尾的,它是纯二进制数据,我得到了一个具有大小的整数。我尝试将它分配给一个字符串并从一个字符串创建一个流,但是字符串在一个空字符之后终止......并且数据被复制。
int size;
char *data;
string s = *data;
如何在不复制数据+指定指针数据大小的情况下从 char 数组指针创建字符串?除了字符串流,你还知道其他解决方案吗?
【问题讨论】:
-
所以,澄清一下:你的问题是你的
char *不是空终止的,因此你在构建std::string时遇到问题吗? -
是的,这基本上就是问题所在。我也想知道是否有人知道更好的解决方案。
-
这可能是解决方案:stackoverflow.com/questions/2079912/…(一个版本使用 boost,用于复制数据,一个仅适用于 gcc)
标签: c++ ifstream stringstream