std::string 复制构造函数在 GCC 4.1.2 中不深入?

2024-01-07

我想知道我是否误解了什么:复制构造函数来自std::string not复制其内容?

string str1 = "Hello World";
string str2(str1);

if(str1.c_str() == str2.c_str()) // Same pointers!
  printf ("You will get into the IPC hell very soon!!");

这将打印“你很快就会进入 IPC 地狱!!”这让我很烦恼。

这是正常行为吗std::string?我在某处读到它通常会进行深层复制。

然而,这按预期工作:

string str3(str1.c_str());

if(str1.c_str() == str3.c_str()) // Different pointers!
  printf ("You will get into the IPC hell very soon!!");
else
  printf ("You are safe! This time!");

它将内容复制到新字符串中。


完全有可能你的string实现使用写入时复制这可以解释该行为。尽管对于较新的实现(并且不符合 C++11 实现),这种情况不太可能发生。

标准对返回的指针的值没有限制c_str(此外它指向一个以 null 结尾的 c 字符串),因此您的代码本质上是不可移植的。

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

std::string 复制构造函数在 GCC 4.1.2 中不深入? 的相关文章

随机推荐

  • 如何从curl或github cli创建webhook

    如何从curl 或github cli 创建webhook 这个文档 没有多大帮助 https docs github com en rest reference repos create a repository webhook code
  • 更改 CAShapeLayer 而不使用动画

    我想设置strokeEnd的财产CAShapeLayer没有默认动画 根本没有动画 我环顾四周试图找到如何做到这一点 但一切似乎都是关于如何为属性设置动画 在核心动画术语中 动画的更通用术语是 动作 例如 您可以看到CAAnimation符
  • 如何将两个数字相加?

    我写了一个 JavaScript 计算器 但是假设当我给出第一个数字时2第二个数字为3 结果显示23 但我想将这两个数字相加 谁能帮帮我吗 当我尝试减去这两个数字时也会发生这种情况 为什么这不起作用 var cal prompt Pleas
  • 如何在 ionic 框架 + cordova 中显示 local:// 图像?

    有谁知道如何使用 Ionic http ionicframework com docs http ionicframework com docs 当应用程序在设备上运行时 我当前收到此错误 GET unsafe local img thum
  • 根据日期更改图像源

    我想做的是根据月份和日期更改登陆页面图像 问题是当我实现此代码时出现错误 代码如下 function kblogo var d new Date var Today d getDate var Month d getMonth var lo
  • 群组成员可登录 Facebook

    我是 Facebook 上一个小组的管理员 该小组大约有 40 50 名成员 现在我正在为该组构建一个网页 该网页将授权用户使用 Facebook 登录 我正在使用 Laravel SammyK 的LaravelFacebookSDK ht
  • 如何使用预处理器指令检查操作系统?

    我需要我的代码根据编译它的操作系统来执行不同的操作 我正在寻找这样的东西 ifdef OSisWindows do Windows specific stuff else do Unix specific stuff endif 有没有办法
  • 如何将字符串渲染为自定义 React 组件?

    所以我有这个代码 ReactDom render
  • 重定向 URI 中“postmessage”的用途是什么?

    据我所知 在 Google 的身份验证代码流程中 redirect uri 需要为 postmessage 而不是 URI 谁能解释一下这个值具体是做什么的 我最好的解释是 它告诉浏览器返回到帖子的来源 但我没有文档来支持这个假设 关于这个
  • 将 EXE 输出写入批处理文件

    我有一个 EXE 其输出值为 0 1 EXE 将通过批处理文件调用 我想要批处理文件运行 EXE 并写入获得的输出 这怎么可能 任何帮助 将不胜感激 我假设您想要捕获 EXECUTIVE 的输出并处理该值 而不是仅仅打印该值 以下是如何捕获
  • pywinauto 未检测到子窗口

    我正在使用最新版本 迄今为止 的 pywinauto 还使用 PyInspect uia 来识别控件 我正在自动化应用程序上的控件 该过程的一部分是检查触发窗口从菜单选择 如 编辑 gt 设置 中出现后弹出的窗口上的几个框 问题是 pywi
  • 如何合并两个 JObject? [复制]

    这个问题在这里已经有答案了 我有第一个 json data id id1 field field1 paging prev link1 第二个 data id id2 field field2 paging prev link2 我想合并
  • Java swing 动画看起来不稳定。如何让它看起来专业?

    更新 半复杂动画 摇摆计时器 火车残骸 问题的最终根源是 java 计时器 无论是 swing 版本还是实用程序版本 它们不可靠 尤其是在跨操作系统比较性能时 通过实现普通线程 程序可以在所有系统上运行得非常流畅 http zetcode
  • 呈现为下拉列表的智能字段不显示说明

    我有一个智能字段 我定义如下
  • pandas read_excel 同一张纸上的多个表

    是否可以使用 pandas 从 Excel 工作表文件中读取多个表 就像是 读取 table1 从第 0 行到第 100 行 读取 table2 从第 102 行到第 202 行 我编写了以下代码来自动识别多个表 以防您需要处理许多文件并且
  • 配置不正确:包含的 urlconf .urls 中没有任何模式

    我有一个 django 1 6 x 项目 可以在开发服务器上正常运行 但在 Ubuntu 12 04 3 上的 Apache2 2 2 22 1 和 mod wsgi 3 3 4 下失败 并出现错误 配置不正确 包含的 urlconf er
  • Bash 波形符扩展

    是否可以添加 bash 用于波浪号扩展的规则 我想让 data 扩展到 data users me scratch 扩展到 data scratch me 等等 这可能吗 还是 bash 对 的控制太紧 Thanks Andrew 波形符扩
  • 将对象添加到 NSMutableArray 时遇到问题

    我在将对象添加到 NSMutableArray array 时遇到问题 Controller m import Controller h implementation Controller void parser NSString stri
  • 如何使用canvas在单页中绘制三个三角形?

    function areaval var equation number val var secod acure val var thrd pmet val var frd cmet val var a Math abs parseInt
  • std::string 复制构造函数在 GCC 4.1.2 中不深入?

    我想知道我是否误解了什么 复制构造函数来自std string not复制其内容 string str1 Hello World string str2 str1 if str1 c str str2 c str Same pointers