【问题标题】:Trying to read the contents from strstream causes access violation试图从 strstream 读取内容会导致访问冲突
【发布时间】:2016-10-07 09:37:34
【问题描述】:

我正在尝试使用 str() 读取 ostrstream 的内容。在尝试这样做时,我总是遇到访问冲突并且我的应用程序崩溃。有没有办法从 strstream 读取而不会导致流错误?

我正在开发一个基于 Borland C++ 的遗留项目。我目前正在使用 Borland C++ v5.02 来构建我的项目。由于代码庞大且分散在大量文件中,因此我无法在此处粘贴代码。不过,我会尽量强调我的用例。

ps 是整个项目中用于打印收据的流。我需要在不破坏代码的情况下从此 strstream 获取收据数据。

string str = ps.pStr->str();

ps.Pstr->rdbuf()->冻结(0);

ps

最后一行导致访问冲突

【问题讨论】:

  • 示例解决方案:your_stream
  • 谢谢 Defter。不过,我还有一个问题。我真正需要做的是从 strstream 中读取数据,并让流处于可以再次使用的状态。我尝试了rdbuf()->freeze(0)命令,但是提取数据后流无法使用。
  • 请在您的问题中添加示例代码,也许还有更多问题

标签: strstream


【解决方案1】:

您错过了缓冲区末尾的 set null。

Before any call to str() that uses the result as a C string, the buffer must be null-terminated, typically with std::ends.

【讨论】:

  • 非常感谢 Defter。我无法使用 std::ends 所以我只插入了一个空字符'/0'。这似乎解决了这个问题。 :)
猜你喜欢
  • 2015-08-29
  • 1970-01-01
  • 2015-02-18
  • 1970-01-01
  • 2020-12-11
  • 2012-05-22
  • 2020-10-12
  • 2018-06-22
  • 2010-11-05
相关资源
最近更新 更多