【问题标题】:How to convert a string in an array to lowercase [closed]如何将数组中的字符串转换为小写[关闭]
【发布时间】:2020-02-03 03:06:52
【问题描述】:

我有两个字符串数组,我试图比较它们中的字符串。但是,数组中的一个字符串的第一个字母大写,而另一个字符串则没有。有什么想法吗?

【问题讨论】:

  • 向我们展示您的尝试。
  • 使用 trasform 为完整的字符串制作大写字母。在比较之前将两个数组字符串都转换为大写。 std::string s("你好"); std::transform(s.begin(), s.end(), s.begin(), [](unsigned char c) -> unsigned char { return std::toupper(c); });
  • 您应该进行一些最小的、完整的、可重现的尝试,包括测试输入和结果输出。
  • 另外,请查看您可用的 std::string 方法...考虑 a) operator ==(s1, s2)(即 if (s1 == s2) { ..when equal action .. } and b) if(0 == compare(s1, s2)) { .. when equal action.. }
  • “有什么想法吗?” -- 如果两个字符串的第一个字母不相同,则字符串不相等。也许您的要求没有被很好地理解?您是否错误地陈述了您的问题?

标签: c++ arrays string


【解决方案1】:

我有两个字符串数组,我试图比较来自 他们。

您可以将std::equal 用于两个字符串,如下所示:

bool compareStrings(const string& a, const string& b)
{
    return std::equal(a.cbegin(), a.cend(),
                      b.cbegin(), b.cend(),
                      [](const auto& x, const auto& y) {
                          return std::tolower(x) == std::tolower(y);
                      });
}

如果你可以使用 boost,你可以这样做:

if (boost::iequals(a, b))
{
    // strings are same
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 2015-07-25
    • 1970-01-01
    • 2013-09-17
    相关资源
    最近更新 更多