对字符串使用小于比较运算符

2024-01-07

我正在关注 C++ 教程,并查看字符串和运算符重载,例如+=, ==, !=目前我有一个简单的 if 语句:

if(s1 < s2)
    cout << s2 <<endl;
else
  if(s2 < s1)
    cout << s1 << endl;
  else
    cout << "Equal\n";

但这是如何工作的,程序如何决定哪个字符串大于另一个字符串呢? 环顾四周,我发现了一个基本的模板声明:

template<class charT, class traits, class Allocator>
bool operator< ( const basic_string<charT,traits,Allocator>& lhs,
                 const basic_string<charT,traits,Allocator>& rhs );

这是否定义了如何<作品?如果是这样,那是什么<charT,traits,Allocator>意思是/做什么?

另外,以下运算符对字符串有任何意义吗?-= and *=


字符串上的小于运算符对字符串进行字典顺序比较。这以与按字典顺序列出字符串相同的方式比较字符串,一般适用于具有非字母字符的字符串。

例如:

"a" < "b"
"a" < "ab"
"A" < "a"             (Since A has ASCII value 65; a has a higher ASCII value)
"cat" < "caterpillar"

欲了解更多信息,请查看std::lexicographical_compare http://en.cppreference.com/w/cpp/algorithm/lexicographical_compare小于运算符通常调用的算法。

As for -= and *=,这些运算符都没有在字符串上定义。唯一定义的“算术”运算符是+ and +=,执行字符串连接。

希望这可以帮助!

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

对字符串使用小于比较运算符 的相关文章

随机推荐

  • 为什么 MongoDB 配置服务器必须只有一个或三个?

    在阅读了 MongoDB 分片架构的官方文档后 我还没有找到为什么需要一到三个配置服务器 而不是其他数量 The 有关配置服务器的 MongoDB 文档 https docs mongodb org v3 0 core sharded cl
  • 栈帧和作用域之间有什么关系?

    最近我正在学习Python 中的范围界定 我了解什么是堆栈框架 但我对堆栈框架和作用域之间的关系和区别感到困惑 我通过 Python计算与编程简介 这本书来学习Python 它没有具体阐明这两个术语 范围只是 LEGB 之一 本地 封闭 全
  • PowerMockito 在尝试存根私有重载方法时抛出 NullPointerException

    我 仍在 尝试检查是否bar Alpha Baz called bar Xray Baz 使用 PowerMockito 如bar Xray Baz is private 考虑到我的 MCVE 课程 实际上没有调用后者Foo以下 我上过同一
  • ARM 汇编器中的寄存器操作数是如何编码的?

    我反编译了一些ARM ELF文件并阅读了汇编代码 但是 我不明白一些代码是如何翻译成助记符的 例如我得到这样的代码 hex code mnemonic binary 0xb480 push r7 1011 0100 1000 0000 0x
  • 有没有办法正确模拟重新选择选择器以进行单元测试?

    我的项目中有一个非常复杂的选择器结构 某些选择器可能最多有 5 层嵌套 因此其中一些很难通过传递输入状态进行测试 我想改为模拟输入选择器 然而我发现这实际上是不可能的 这是最简单的例子 selectors1 js export const
  • PHP 的 create_function() 与仅使用 eval()

    在 PHP 中 您有 create function 函数 它创建一个唯一的命名 lambda 函数 如下所示 myFunction create function foo return foo myFunction bar Returns
  • Dapper 批量插入返回序列 ID

    我正在尝试使用 Dapper 通过 Npgsql 执行批量插入 这会返回新插入行的 id 我的两个示例中都使用了以下插入语句 var query INSERT INTO MyTable Value VALUES Value RETURNIN
  • Java 数组索引越界异常

    当我需要将 5 个用户输入的值存储到一个数组中 将其发送到一个方法 并查找并显示最低值时 我一直在研究这个基本的 java 程序 该程序很简单 并且可以运行 但是当我输入最后一个数字时 出现错误 线程 main 中的异常 java lang
  • 调用 setCenter 后 OpenLayers,地图仍处于 0,0 位置

    我尝试通过 setCenter 方法设置地图中心 但仍然不起作用 地图不动 我尝试使用从投影到地图投影的变换 但没有成功 这是代码的一部分 谢谢
  • Spark Streaming中如何处理旧数据并删除处理后的数据

    我们正在运行一个 Spark 流作业 从目录中检索文件 使用 textFileStream 我们担心的一个问题是作业已停止但文件仍在添加到目录中的情况 一旦作业再次启动 这些文件就不会被拾取 因为它们在作业运行时不是新的或已更改 但我们希望
  • 如果中间缺少数字,则获取数字列的范围(最小/最大)

    如果数字在某处结束然后再次以更高的数字开始 我将如何查询数字列的范围 如果我有一个像这样的专栏 Number 1 2 3 4 5 11 12 13 我怎样才能返回这样的结果 Min Max 1 5 11 13 WITH CTE AS SEL
  • 使用“mailto:”方案通过意图发送电子邮件附件

    我正在使用此代码附加文件 final Intent emailIntent new Intent android content Intent ACTION SENDTO String uriText Uri file Uri fromFi
  • MVC 将方法添加到 jquery.validate.unobtrusive.js 中

    我最近有一个问题使复选框验证工作 https stackoverflow com questions 6923430 mvc unobtrusive validation on checkbox not working 6931490 69
  • 如何使用比较器定义自定义排序顺序?

    我想开发一个汽车列表排序演示 我正在使用数据表来显示汽车列表 现在实际上我想按汽车颜色对列表进行排序 这里不按字母顺序排序 我想使用我的自定义排序顺序 例如首先是红色汽车 然后是蓝色汽车 等等 为此我尝试使用JavaComparator h
  • 仅要求和测试命名参数

    我有一个旨在接受命名参数的脚本 我想在未命名或命名错误的参数的情况下提供一些错误检查 并且我看到了一些奇怪的情况 该脚本以参数块开头 如下所示 param string Alias s sets string Alias l locatio
  • C# 中的树形数据结构

    我正在寻找 C 中的树或图数据结构 但我想没有提供 使用 C 2 0 对数据结构进行广泛检查 http msdn microsoft com en us library ms379574 aspx关于为什么 是否有一个常用的方便的库来提供此
  • 为什么Python for循环中的临时变量计算会占用这么多内存? [复制]

    这个问题在这里已经有答案了 下面两段代码是等价的 但是第一个代码占用了大约700M内存 后一个代码只占用了大约100M内存 通过Windows任务管理器 这里会发生什么 def a lst for i in range 10 7 t a t
  • python Qt:主小部件滚动条

    我们试图在主窗口部件上放置滚动条 因此如果用户调整主窗口的大小 滚动条就会出现 并让他上下移动以查看较小窗口部件之外的子部件 从而允许其左右移动 这是带有滚动条的主小部件的代码 def centralWDG self MainWindow
  • 带有关键字参数的 PyObject_CallMethod

    我正在尝试在我的 C 应用程序中嵌入 Python 2 7 库 并且使用 Python C API 从 C 调用 Python 代码 我需要调用采用关键字参数的 Python 方法 从语义上讲 我试图在 Python 中实现与以下行等效的效
  • 对字符串使用小于比较运算符

    我正在关注 C 教程 并查看字符串和运算符重载 例如 目前我有一个简单的 if 语句 if s1 lt s2 cout lt lt s2 lt