istrstream
非常适合我的需求 - 基本上,采用固定的字符缓冲区,并给我一个简单的方法来提取行getline()
和测试eof()
我正在将我们的项目切换到 C++ 17 合规性 - 已弃用istrsteam
- 显然是因为有太多 C++ 程序员无法理解固定缓冲区内存管理(你是认真的吗?!)
无论如何,它istringstream
提供了相同的使用语义,但它现在需要在构建时复制整个固定字符缓冲区。
这是一种反模式。
我正在寻找的是一种使用 astring_view
代替 astring
的方法istringstream
,或者是一种更好的替代品,stringstream
它本身可以处理外部管理的固定缓冲区(它只需要指向它,它永远不需要担心管理该资源,只是一样strstream
)。
目前,在 VS 2017 中,这是非法的,如果我理解正确的话,在当前最先进的 C++ 中到处都是非法的(如果我错了,我相信你会纠正我!)
std::string_view raw_view(reinterpret_cast<const char *>(raw_buffer.get()), raw_buffer.size());
std::istringstream raw_stream(raw_view);
所以 - 想法?
注意:Peter Sommerlad 在这里为 C++ 标准机构提出了这个确切想法的建议: http ://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0448r1.pdf