在 C++17 中使用 const std::string& 参数是否有意义?

2024-04-05

通过得到string_view在 C++17 中,我们得到了传递两者的廉价方法std::string and char*不拥有字符串所有权并避免制作临时副本的函数。通过使用std::string按值传递和std::move我们可以显式且快速地传递右值和左值引用的字符串所有权。

我的问题是:使用有什么好处吗const std::string&作为新 C++ 标准中的任何函数参数?


Yes.

问题在于std::string_view是它不记得它是否指向以空结尾的字符串。

如果您正在为使用 null 终止字符串的 C api 编写包装器,则必须不断复制您的std::string_views into std::string确保您有空终止符。

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

在 C++17 中使用 const std::string& 参数是否有意义? 的相关文章

随机推荐

  • 如何从 C 代码生成 #define 值列表?

    我的代码有很多复杂的 define 错误代码 这些错误代码不容易解码 因为它们嵌套在多个级别中 有没有什么优雅的方法可以让我获得 define 列表及其最终数值 或其他任何值 举个例子
  • 在faster_rcnn_resnet50_coco模型中哪里可以找到model.ckpt?

    在一个很棒的教程中使用tensorflow API进行迁移学习 https medium com WuStangDan step by step tensorflow object detection api tutorial part 4
  • Db4o Mvc 应用程序架构

    我目前正在测试 Db4o 的 asp net MVC 2 应用程序想法 但有一些事情我不太确定最佳的继续方式 我希望我的应用程序使用可猜测的路由而不是 Id 来引用我的实体 但我也认为我需要某种 Id 来更新场景 例如我想要 country
  • py2exe 错误处理重定向和弹出窗口

    一直试图找出如何让 py2exe 更优雅地处理错误 基本上发生了两件奇怪的事情 1 关闭程序后弹出消息 gt 想要抑制 不显示 此弹出窗口 Use try except gt doesn t work http osdir com ml p
  • 在 Terraform 中,数据源中可以有变量吗?

    我想知道在 terraform 中调用数据源时是否可以使用变量 而不是 data terraform remote state dev vpc 我想要一个变量调用 dev 像 data terraform remote state var
  • 更改 Windows 计划任务的电源设置

    我创建了一个 Windows 任务并计划每 1 小时运行一次 任务每小时运行一次 但收到警告Task Scheduler did not launch task Sample Task because computer is running
  • 想要在 C# 中绘制一个跟随鼠标的圆圈

    首先 我是 C 的真正初学者 所以请保持温柔 我试图让一个圆圈跟随我的光标 我不想留下任何 痕迹 private void Form1 MouseMove object sender MouseEventArgs e drawCircle
  • MKMapViewDelegate:如何识别 rendererForOverlay 中的覆盖

    我添加两个不同的MKGeodesicPolyline实例到MKMapView像这样 CLLocation LAX CLLocation alloc CLLocation JFK CLLocation alloc CLLocation LHR
  • 调用批处理脚本而不使用 CALL 或 START

    当我从批处理脚本调用批处理脚本而没有CALL or START 例子 我有两个脚本 a bat 和 b bat a bat echo I am A gt gt log b bat echo end of A gt gt log b bat
  • 如何备份本地Git仓库?

    我在一个相对较小的项目上使用 git 我发现压缩 git 目录的内容可能是备份项目的好方法 但这有点奇怪 因为当我恢复时 我需要做的第一件事是git reset hard 以这种方式备份 git 存储库有任何问题吗 另外 有没有更好的方法来
  • JSF 2.2 - 文件上传不适用于 Ajax。表单的 enctype 似乎不正确(仅通过 AJAX)

    尝试实现 JSF 2 2 示例 我有以下代码
  • Java中有二进制文字吗?

    我想用二进制文字来声明我的整数 在Java中可以吗 在 JDK 7 中可以 int binaryInt 0b101 只需在您的号码前添加前缀即可0b
  • HornetQ 重启后不会保留消息

    我使用 HornetQ 作为队列提供程序 因为它具有持久性功能 但是 在我重新启动应用程序后 队列中的所有消息都会丢失 也许是配置问题 这是代码 Step 1 Create the Configuration and set the pro
  • Excel VBA 禁用快捷键有时会禁用数据输入

    为什么我的代码会随机偶尔禁用数据输入 但即使我隔离它并删除所有其他宏 大多数时间仍然可以工作 该代码禁用了几乎所有快捷键 但不应影响简单的数据输入 Option Explicit Rem mod ShortCutKeys Ctrl Alt
  • WebGet 的 WCF 响应格式

    WCF 为 ServiceContract 中的 WebGet 注释中的 ResponseFormat 属性提供了两个选项 ServiceContract public interface IService1 OperationContra
  • Drupal 6:打印纯正的主链接和所有子链接

    世界上怎么可能 我发誓 我读了相当于三本百科全书的书 却毫无用处 我已经尝试过区域 page tpl php 和块内的解决方案 他们都没有给我我需要的东西 而且我知道还有很多其他人也需要这个 我得出的结论是 我想打印出 page tpl p
  • 模糊除 div 之外的整个页面

    我有以下代码 除了中心的红色 div 之外 我需要将所有内容都模糊化 我尝试使用filter none or filter blur 0 但这行不通 如何模糊背景中除红色 div 之外的所有内容 编辑 我也尝试将它与 z index 一起使
  • iOS 11:蜂窝信号强度

    我正在获取蜂窝信号强度 iOS let statusBarView UIApplication shared value forKey statusBar as UIView if let foregroundView statusBarV
  • Spark:当我在 Range 中使用累加器时,它无法正常工作

    我不明白为什么 Spark 没有正确更新我的累加器 object AccumulatorsExample extends App val acc sc accumulator 0L acc sc range 0 20000 step 25
  • 在 C++17 中使用 const std::string& 参数是否有意义?

    通过得到string view在 C 17 中 我们得到了传递两者的廉价方法std string and char 不拥有字符串所有权并避免制作临时副本的函数 通过使用std string按值传递和std move我们可以显式且快速地传递右