我有大量的C++类从文件流中读取数据。这些功能看起来像这样。C++转换文件流功能使用字符串流
bool LoadFromFile(class ifstream &file);
我创建了一个新的函数来读取内存而不是文件。所以我搜索了一下,一个istringstream似乎没有任何修改代码的伎俩。
bool LoadFromData(class istringstream &file);
现在我的问题是。我需要构造这个流从char数组读取。该字符串不是空终止的,它是纯二进制数据,我得到了一个大小的整数。我试着将它分配给一个字符串并从一个字符串中创建一个流,但是字符串在空字符后终止..并且数据被复制。
int size;
char *data;
string s = *data;
如何从char数组指针创建字符串而不复制数据+指定指针数据的大小?你知道任何其他的解决方案,而不是一个stringstream吗?
因此,澄清:你的问题是你的'char *'不是空的终止,因此你无法构建一个'std :: string'吗? – quasiverse
是的,这基本上是问题。我也想知道是否有人知道更好的解决方案。 – Tito
这里也许是解决方案:http://stackoverflow.com/questions/2079912/simpler-way-to-create-ac-memorystream-from-char-size-t-without-copying-th(一个版本使用提升,在副本上的数据和一个只适用于gcc) –