C++ 重载运算符 << for std::string

2024-04-14

我现在刚刚看到另一个简单的 C++ 代码使用 sprintf 将 C 内置函数附加到字符数组中,我想足够了。

我可以帮助提供简单、轻量级、附加和非格式化功能std::string,但由于它将被签入团队的通用代码中,我希望它是完美的,所以我需要一些建议在界面上此功能(即不在实际实现中)。

以下可能是可能的(我没有测试它,这只是一种预感):

  1. 超载“+=" 运算符(可能位于 std 或 global 之外的另一个命名空间中)
  2. 超载“<<“ 运算符(同样,在另一个命名空间中)
  3. 提供非运算符非成员函数(我猜,又是在另一个命名空间中)
  4. 我没有看到另一个简单的解决方案?

每种解决方案的优点和缺点是什么(我更喜欢“+=“, 甚至 ”<<") ?

Notes

  • 重点不在于格式化。如果有人想要格式化,C++ 流很适合。我只想要简单、轻量级、一条语句/函数调用附加。
  • 使用另一个命名空间是因为我们无权向 std 命名空间添加代码,并且我不想污染全局命名空间,所以,是的,我想用户必须添加一个using namespace SomeNamespace ;正如它所做的那样<utility>'s rel_ops http://www.cplusplus.com/reference/std/utility/rel_ops/命名空间)
  • 我在用着std::string 它本身无法处理除自身之外的其他类型,char and char * http://www.cplusplus.com/reference/string/string/operator+=/。我想扩展它来处理其他简单类型。
  • 使用字符串流在代码方面的权重太大(声明流,附加,然后检索.str()将其放入字符串等中),我最不想要的是一个语法糖内联函数,在每次调用时实例化一个字符串流)。正如您在下面的示例中看到的,stringstream 解决方案是太冗长:

我会用ostringstream http://www.cplusplus.com/reference/iostream/ostringstream/ and 流操纵器 http://www.cplusplus.com/reference/iostream/manipulators/取代sprintf。这不值得重新发明轮子 http://en.wikipedia.org/wiki/Reinventing_the_wheel.

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

C++ 重载运算符 << for std::string 的相关文章

  • C++ 模板中的名称查找

    我有一些 C 代码 如果没有 fpermissive 选项 就无法再编译 这是我无法分享的专有代码 但我认为我已经能够提取一个简单的测试用例来演示该问题 这是 g 的输出 template eg cpp In instantiation o
  • 在桌面应用程序中,类库的连接字符串存储在哪里?我可以在app.config中使用吗?

    我是桌面应用程序开发的新手 目前正在使用分层架构 用户界面 DAL BLL 构建桌面应用程序 在 Web 开发中 我曾经将连接字符串存储在 web config 中 我的类库从那里访问它 请指导我在桌面应用程序中如何以及在何处存储 DAL
  • 使用 Selenium for C# 登录 Facebook

    我一直在使用 Selenium C 框架并尝试进行 facebook 登录 但没有任何运气 这是我到目前为止得到的 基于这篇文章 使用 Selenium 测试 Facebook Connect 应用程序 https stackoverflo
  • 液体字符串中的转义字符

    我正在尝试将包含各种尺寸的标签列表放在一起 在 Shopify 中使用 Liquid 尺寸使用单引号和双引号表示英寸和英尺 因为它同时使用两者 所以会导致字符串正确关闭的问题 我尝试过使用标准转义字符 但这似乎不起作用 是否可以在 Liqu
  • Entity Framework 4.1 RC:Code First EntityTypeConfiguration 继承问题

    我尝试使用通用的 EntityTypeConfiguration 类来配置所有实体的主键 以便每个派生的配置类不会重复自身 我的所有实体都实现一个公共接口 IEntity 它表示每个实体必须有一个 int 类型的 Id 属性 我的配置基类如
  • PHP 中的多行字符串文字

    考虑 xml l xml vv echo xml 这将回响vv 为什么以及如何为诸如此类的事情执行多行字符串文字简单XML https en wikipedia org wiki SimpleXML etc Well xml l vv Wo
  • C++ 私有静态成员变量

    此 C 代码在编译时产生链接器错误 A h class A public static void f private static std vector
  • 使用成员作为实现者来实现接口

    我有实现 IA 的 A 类 现在我需要创建也应该实现 IA 的类 B B 类有 A 类的实例作为成员 有什么方法可以定义A的实例实现B类中的IA吗 interfase IA void method1 void method2 void me
  • 枚举器上的 [[maybe_unused]]

    查看规格 maybe unused http en cppreference com w cpp language attributes 它指出 出现在类 typedef 变量 非静态数据成员 函数 枚举或枚举器的声明中 如果编译器对未使用
  • 在不使用 Thread.Sleep c# 的情况下延迟发送电子邮件

    我有一个 for 循环 它循环并每个循环发送一封电子邮件 现在我正在使用 thread sleep 但我希望用户仍然能够与程序交互 只需取消该循环即可 是否可以在不使用 thread sleep 的情况下做到这一点 您是否在 UI 线程上运
  • 如何用C++解析复杂的字符串?

    我试图弄清楚如何使用 解析这个字符串sstream 和C 其格式为 string int int 我需要能够将包含 IP 地址的字符串的第一部分分配给 std string 以下是该字符串的示例 std string 127 0 0 1 1
  • 为什么C++变量是指针时不需要正确定义?

    我对 C 语言完全陌生 特别是指针 经验主要是 PHP 并且希望对以下内容进行一些解释 我已经尝试寻找答案 这两行代码如何能够在我的程序中完成完全相同的工作 第二行似乎违背了我迄今为止所学到和理解的关于指针的一切 char disk 3 D
  • .Net Core 中的脚手架以及解决方案中的多个项目

    我创建了一个针对 net461 的 Net Core MVC6 应用程序 我使用了一个我非常熟悉的项目结构 其中我将数据 模型和服务类放置在单独的类库项目中 并且 Web 项目引用这些项目 当我尝试搭建控制器时 我收到一条错误 指出我正在搭
  • std::string 在 Visual Studio 上的具体行为?

    我有一个项目需要读取 写入大文件 我决定使用 ifstream read 将这些文件一次性放入内存中 放入 std string 中 这似乎是在 C 中执行此操作的最快方法 http insanecoding blogspot com 20
  • C 中的 N 依赖注入 - 比链接器定义的数组更好的方法?

    Given a 库模块 在下文中称为Runner 它作为可重复使用的组件 无需重新编译 即静态链接库 中应用程序分区架构的 而不是主分区 请注意 它仅包含main 出于演示目的 Given a set 顺序无关 调用的其他模块 对象Call
  • 如何使用简历实现一个“一网打尽”的异常处理程序?

    我想知道我怎样才能写一个抓住他们全部应用程序级别的异常处理程序将为用户提供恢复应用程序流程的选项 如果您正在运行 Windows 窗体应用程序 将处理程序添加到Application ThreadException event
  • 实体框架代理创建

    我们可以通过使用来停止在上下文构造函数中创建代理 this Configuration ProxyCreationEnabled false 在 EF 4 1 中创建代理有哪些优点和缺点 代理对于两个功能是必需的 延迟加载 导航属性在第一次
  • 如何将 Metro 应用部署到桌面?

    我正在尝试将我的 C 应用程序部署到我的 Windows 8 Metro 桌面 我可以在 bin 文件夹中看到部署的文件 但是当我尝试打开它们时 出现以下错误 该应用程序只能在 AppContainer 的上下文中运行 我检查了属性上下文菜
  • C/C++ 通过 Android NDK 在 JNI 中看不到 Java 方法

    我正在尝试从使用 NDK 构建的 C 类文件调用 Java 方法 它不断抛出常见的 未找到非静态方法 错误并导致整个 Android 应用程序崩溃 下面的代码片段 有些东西可能不需要 但我按原样保留它们 因为焦点 问题在于refreshJN
  • 具有多种类型的 C# 泛型类型推断

    我有以下通用方法 用于将一种类型的输入对象序列化为超类型 如下所示 public string SerialiseAs

随机推荐

  • 如何从 h:commandLink 重定向 url

    我是否记得正确 或者参数立即设置为 true 应该更改浏览器的 url 如果正确的话 为什么这个链接不能正常工作
  • Stackexchange.redis 缺乏“WAIT”支持

    我在客户端应用程序正在使用的负载均衡器后面有 3 个 Web API 服务器 我正在使用这个库来访问具有一个主服务器和几个从服务器的 Redis 集群 目前不支持 WAIT 操作 我需要此功能来存储新创建的用户会话并等待它复制到所有从属服务
  • 如何获取视图的绝对坐标

    我正在尝试获取视图左上角的绝对屏幕像素坐标 但是 我能找到的所有方法 例如getLeft and getRight 不起作用 因为它们似乎都与视图的父级相关 因此给了我0 执行此操作的正确方法是什么 如果有帮助的话 这是一个 将图片恢复正常
  • 计算与 xsd 中的正则表达式匹配的字符串的最大可能长度 (C#)

    我正在使用 XSD 并且可以以字符串形式从 XSD 访问模式 一个例子
  • 如何使用 sublime text 2 打开目录中的所有文件?

    我正在使用 Windows 并已成功将 sublime 添加到 PATH 中 似乎像 b 这样在后台打开的命令由于某种原因不起作用 我的问题是如何使用命令 subl dir 打开目录并单独打开每个文件 现在它将它添加到项目中 我更希望它只是
  • 从 python 中的 groupby 对象中选择特定行

    id marks year 1 18 2013 1 25 2012 3 16 2014 2 16 2013 1 19 2013 3 25 2013 2 18 2014 假设现在我通过 python 命令将以上内容分组到 id 上 分组 fi
  • 如何获取 XDocument 的独立副本?

    我正在尝试创建一个新的 XDocument 如下所示 var xmlString documentDictionary documentKey ToString SaveOptions DisableFormatting XDocument
  • 移动语义对于 Rust 中的引用透明性意味着什么?

    我正在尝试弄清楚移动语义如何影响引用透明度 参考透明度 https stackoverflow com q 210835 5986907 RT 允许我们用结果替换任何表达式 而不改变程序的含义 释义自 例如 我可以替换1 1我的程序中的任何
  • 如何在 R 中创建具有相同色标的栅格图

    我正在使用 R 中的 raster 包从栅格文件创建一些地图 我想创建比较栅格 并排显示多个地图 为此 重要的是 无论每个地图中的值如何 所有地图使用的色标都相同 例如 如果地图 1 的值介于 0 1 之间 而地图 2 的值介于 0 0 5
  • 使用perl XML::LibXML来解析

    我正在使用 perl 的 XML LibXML 模块来解析来自设备的 XML 响应 看来我成功获取数据的唯一方法是修改设备的 XML 响应 以下是来自设备的 XML 响应
  • 在 PHP 代码中隐藏数据库登录信息

    我是网络编程的初学者 我正在尝试创建一个从 SQL 数据库读取数据的简单网站 起初我只是写了我的数据库密码并直接登录到php代码 这显然不是一个好主意 那么 更 更 安全 的方法是什么 我读到关于将 php 代码放入一个单独的文件中 这意味
  • 展平 mongoDB 中的嵌套 JSON 结构

    我有一个存储在 MongoDB 中的对象 如下所示 id 123 name xyz attrib address 123 xyz rd phone 123 456 7890 我想扁平化这个结构 这样就没有attrib场 我只是有addres
  • Eclipse 插件和 Maven 依赖项中存在的“groovy-all”jar 之间的兼容性问题

    在我的 POM 中 有一个依赖项 spock core 1 0 groovy 2 3 它将 groovy all 2 3 10 添加到我的项目中 而且 我的 eclipse groovy 插件包含 groovy all 2 3 7 jar
  • SQL性能问题如何修改下面的脚本?

    我编写了一个 SQL 查询 涉及 INNER JOIN LEFT OUTER JOIN UNION 和一个需要很长时间执行的子查询 我的 SQL 技能不是很好 如果有人可以帮助我如何优化以下查询以使其更快 我将不胜感激 SELECT Bra
  • 求解微分方程 Sympy

    我一直没能找到这个微分方程的特定解 from sympy import m float raw input Mass n gt g 9 8 k float raw input Drag Coefficient n gt v Function
  • @Context 返回 Proxy 而不是 HttpServletRequest (代理范围内没有线程本地值)

    我不太明白为什么 Context依赖注入返回 Proxy random number 实例的集合 而不是 HttpServletRequest 或 HttpServletResponse 我正在使用 Glassfish 3 1 2 2 及其
  • 如何在按钮单击时使用 jQuery 验证插件

    我正在尝试执行 jQuery 验证插件 但遇到了一些问题 在同一个按钮上 我必须首先执行验证 当验证成功时 它通过获取该按钮的 id 来执行一些其他 jQuery 代码 例如查看下面的代码 function form insert vali
  • Bootstrap 3 的活动按钮

    在我的导航栏中 我希望当我单击按钮时它们变为活动状态 阴影 现在 我只能永久使它们处于活动或非活动状态 但不知道单击它们后如何更改它 我正在使用新的 Bootstrap 3 0 例如 不活跃 li li Active li class ac
  • Chrome 扩展已禁用“此扩展可能已损坏”Chrome 63.0.3239.84

    我有一个私有 Chrome 扩展程序 可以打开一个文本框并使用文本框中的输入在新选项卡中打开 URL 它一直工作正常 直到上周末 Chrome 更新提示新的 此扩展程序可能已损坏 错误 在 Windows 上 Chrome 将禁用该扩展 在
  • C++ 重载运算符 << for std::string

    我现在刚刚看到另一个简单的 C 代码使用 sprintf 将 C 内置函数附加到字符数组中 我想足够了 我可以帮助提供简单 轻量级 附加和非格式化功能std string 但由于它将被签入团队的通用代码中 我希望它是完美的 所以我需要一些建