std::spanstream 通常如何在 C++ 中使用?

Des*_*old 3 c++ strstream c++23

<spanstream>将在 C++23 中首次亮相(请参阅cppreference)。根据提案,它们是std::span基于缓冲区的字符串流。

我的问题是:

  • 是否std::spanstream与旧的std::strstream(或strstream在 C++ 98 中已弃用)有些等效?
  • 在 C++ 23 完全发布后使用它们有什么好处?

Nic*_*las 9

他们的本意是近下拉更换strstream(与正确的边界检查除外)。因此,它们将具有完全相同的用例。当您有一个要流入/流出的现有缓冲区时。

在 C++20 中添加的将 a 移动std::stringstringstreams的能力消除了现有缓冲区在 a 中时的用例std::string。但有时你只有char const*一个已知长度的裸体。

  • @AyxanHaqverdili:他说“磁铁”。例如,它会引起 ODR 违规,因为在代码的一个位置,您的“format”调用可能会调用“operator&lt;&lt;”,而在另一位置,它会调用您正确的重载。 (2认同)