【问题标题】:How do I compare strings in C++?如何比较 C++ 中的字符串?
【发布时间】:2014-08-04 11:39:04
【问题描述】:

我的一个团队(一名 C++ 开发人员)告诉我,比较两个字符串的相等性“非常复杂和混乱”,因为它们每个都可能是几种不同的字符串类型。我很震惊,在 2014 年可能仍然是这种情况(在 C#、VB.Net 和我熟悉的大多数其他语言中,比较字符串是一个简单的步骤)。有没有一个免费的库可以处理这种类型的细节,以便可以轻松地比较两个字符串的相等性而不用担心它们的字符串类型?

【问题讨论】:

  • 你对字符串相等的定义是什么?是“所有字节都相等”,还是“所有字形都相等”,有什么不同吗?
  • @duDE 我不同意这是 that 特定问题的重复。这个问题似乎是关于包含日期的特定类型的字符串。
  • “因为它们都可能是几种不同的字符串类型” 历史原因。不同的库使用不同的字符串类型;遗留代码使用某种 C 字符串等。即使每个人都同意使用相同的编码,C++ 标准库类型也不适合所有平台上的接口,因为它们的布局不是标准化的。
  • 添加一个实用方法将这些“其他”字符串类型转换为标准字符串,然后您可以使用 ::compare 或 ::operator==

标签: c++


【解决方案1】:

您的问题表述得不是很好,但我认为您对不同的UTFs 有疑问。所以即使是相同的字节也可能意味着不同的东西。

如果是这样,您需要具有相同的基础,例如UTF-8,你没有包含平台,但是它看起来像Windows,所以你可以使用WideCharToMultiByte来转换数据。

如果这不符合您的需求,还有其他一些方法可以做到这一点,so use Google

【讨论】:

  • 抱歉,我指的是 Windows(特别是 Visual C++)。我故意不使用 Google,因为我不想邀请数百万有针对性的垃圾邮件邀请我参加 C++ 课程:-)
猜你喜欢
  • 1970-01-01
  • 2021-06-11
  • 1970-01-01
  • 2013-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-19
相关资源
最近更新 更多