【发布时间】:2018-05-15 23:33:40
【问题描述】:
我想要一个用于写入自动调整大小数组的接口。一种方法是使用通用的std::ostream *。
然后考虑ostringstream是否是目标:
void WritePNG(ostream *out, const uint8_t *pixels);
void *WritePNGToMemory(uint8_t *pixels)
{
ostringstream out;
WritePng(&out, pixels);
uint8_t *copy = new uint8_t[out.tellp()];
memcpy(copy, out.str().c_str(), out.tellp()];
return copy;
}
但我想避免 memcpy()。有没有办法在底层 stringbuf 类中获取数组的所有权并返回它?
我觉得这不能使用标准库来完成,因为流缓冲区甚至可能不是一个连续的数组。
【问题讨论】:
-
没有。你根本不应该坚持 c_str() 返回的值。
标签: c++ iostream ostream streambuf