将 strstream 转换为 sstream 关​​于 c_str() 的冲突

2024-02-17

我有这样的代码块strstream。我把它转换为sstream如下。我不确定,但我认为printStream->str()返回一个字符串对象,其中包含由指向的流缓冲区中的内容的副本(临时)printStream,然后你调用c_str()并得到一个const char *,然后抛弃常量性,然后返回函数作用域之外的指针。我认为由于它是一个临时值,您将从中返回printStream->str(),您将使用指向该函数外部已释放内存的指针。我该怎么做?

char * FieldData::to_string() const
{
  if(printStream)
    return printStream->str();
  FieldData* notConst = (FieldData*) this;
  notConst->printStream = new std::ostrstream;
  // check heap sr60315556
  if (notConst->printStream == NULL)
    return NULL;
  *(notConst->printStream) << "Invalid Field Type";
  *(notConst->printStream) << '\0';
  return printStream->str();
}

char * FieldData::to_string() const
{
  if(printStream)
    return const_cast<char *>(printStream->str().c_str());
  FieldData* notConst = (FieldData*) this;
  notConst->printStream = new std::ostringstream;
  // check heap sr60315556
  if (notConst->printStream == NULL)
    return NULL;
  *(notConst->printStream) << "Invalid Field Type";
  *(notConst->printStream) << '\0';
  return const_cast<char *>(printStream->str().c_str());
}

将返回类型更改为std::string并返回一个std::string直接反对。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 strstream 转换为 sstream 关​​于 c_str() 的冲突 的相关文章

随机推荐

  • 从外部站点动态加载 js

    我想当用户单击按钮时从外部站点加载 JS 代码 例如
  • 如何在 ngTagsInput 中设置标签的颜色?

    我想在我的项目中使用 ng tags input 我尝试根据数组中的颜色属性对象为每个标签设置不同的颜色 Here is plunker http plnkr co edit W5bjrwN5riL94i2jhOP3 p preview我正
  • 反转字符串中元素的顺序

    我有以下字符串 1119 2 483 11021 我想反转该字符串中元素的顺序 期望的输出 11021 483 2 1119 T SQL 版本 2014 您需要一个有序的 split 函数 例如 灵感 https www sqlserver
  • 线程如何节省时间?

    我正在学习 C 中的线程 但是 我无法理解线程的哪些方面实际上提高了性能 考虑仅存在一个核心处理器的场景 将任务拆分为多个线程使用相同的进程上下文 共享资源 并且它们同时运行 由于线程只是共享时间 为什么它们的运行时间 周转时间 小于单线程
  • Html5画布文本交叉点

    我有一些话 所有话都在某个 物体 之王中 这些单词可以在画布上移动 我需要获取所有交叉点的数组 如本例所示 但不需要将文本转换为 SVG paperjs org examples path intersections 谢谢 您可以通过比较两
  • 如何在python源代码中找到运算符的定义?

    我对 in 的实现感到好奇 contains python 中的运算符由于这个问题 https stackoverflow com questions 9089400 python set in operator uses equality
  • 如果页面加载失败,如何运行 Tampermonkey 脚本?

    我有一个在服务器页面上运行的脚本 有时发送不会将任何内容发送回客户端 我得到未收到数据Chrome 中的错误 我想注册此事件 通过 AJAX 通知另一台服务器 然后重新加载页面 即使页面加载失败 如何确保脚本运行 None
  • 如何在Angular中的地图上动态绘制多边形形状

    如何动态绘制多边形形状 未预定义paths 以及如何存储多边形的经纬度值 我已经参考了AGMP多边形 https angular maps com api docs agm core directives AgmPolygon html但这
  • 如何检查从 C++ 字符串到无符号整数的转换

    我需要 1 找出我当前系统上最大的 unsigned int 值是多少 我在 limit h 上没有找到它 写起来安全吗unsigned int maxUnsInt 0 1 我也尝试过unsigned int maxUnsInt MAX I
  • 捕获目录内发生的事件

    我正在使用以下方式观看目录Java 7 nio WatchService通过使用以下方法 Path myDir Paths get rootDir try WatchService watcher myDir getFileSystem n
  • 访问 Access 2013 数据库的架构

    如果我尝试读取 Access 2013 数据库的架构 我会收到以下错误 no read permission on MSysRelationships 现在帮助告诉我 User level security features are not
  • 如何将类添加到 simple_form 2 包装器中的输入组件

    我正在努力拥有class text 在我的输入字段中使用名为 hinted in simple form 2 0 0 rc 的自定义包装器时 config wrappers hinted do b b use input class gt
  • 为什么这个 TensorFlow 实现远不如 Matlab 的神经网络成功?

    作为一个玩具示例 我正在尝试拟合一个函数f x 1 x来自 100 个无噪声数据点 matlab 默认实现非常成功 均方差约为 10 10 并且插值完美 我实现了一个神经网络 其中一个隐藏层包含 10 个 S 型神经元 我是神经网络的初学者
  • NodeJS 中是否可以实现多线程?

    所以我有一个应用程序Socket IO其目的是在不同站点上搜索一些数据 像爬虫之类的东西 主要问题是搜索过程太长 当它发生时我的应用程序卡住了 例如 如果一个用户开始第二次搜索需要等到第一次完成 每个需要搜索的网站都表示为一个单独的类 因此
  • 使用 sed 将带有斜杠的已定义变量的文本替换为空格[重复]

    这个问题在这里已经有答案了 我正在尝试使用 sed 来用已定义的变量替换带有空格的行 例如 我想用 lan 和 lan afile py 替换 哑字符串 我以为这条线是 sed s a dumb string lan g file txt
  • 当程序员使用术语“暴力解决问题的方法”时,他们的意思是什么?

    我想了解程序员在工作中使用术语 暴力 时通常意味着什么 许多编程问题都是对数据空间的搜索 例如列表 树 图等的遍历 在解决问题时 所有数据都被搜索或遍历 如果人们想让代码更快 他们就会开始注意到可用于删除搜索空间中不必要部分的模式 当代码搜
  • 业力打字稿找不到模块

    我有一个非常小的项目 我正在尝试为其设置单元测试 该项目使用时编译良好tsc直接地但是 在尝试执行使用 karma typescript 框架的测试时 我收到以下 Typescript 编译错误 ERRORS 错误 compiler kar
  • 将 XML 扁平化为 HTML 表格

    必须有一种通用方法来转换某些分层 XML 例如
  • PHPUnit 测试函数,具有通过引用传递的值和返回值

    大家好 我需要测试一段调用另一个类的函数的代码 我现在无法编辑 我只需要测试它 但问题是这个函数有一个通过引用传递的值和一个返回的值 所以我不知道如何模拟它 这是列类的功能 public function functionWithValue
  • 将 strstream 转换为 sstream 关​​于 c_str() 的冲突

    我有这样的代码块strstream 我把它转换为sstream如下 我不确定 但我认为printStream gt str 返回一个字符串对象 其中包含由指向的流缓冲区中的内容的副本 临时 printStream 然后你调用c str 并得