【问题标题】:Is this an alternative to tolower?这是tolow的替代品吗?
【发布时间】:2019-10-06 09:20:30
【问题描述】:

我正在解决一个将字符串中的字符转换为小写的非常简单的问题,我显然使用了tolower()。但是,我看到有人使用它,这是一个公认的解决方案。

这是 cpp 中 tolower() 函数的替代方法吗?如果是,为什么?

问题参考:https://atcoder.jp/contests/abc126/tasks/abc126_a

#include <iostream>
using namespace std;

int main(int argc, char const *argv[])
{
    // We want to convert "ABC" to "aBC"
    string S = "ABC";
    S[0] += 0x20;
    // Returns "aBC"
    cout << S << endl;
    return 0;
}

【问题讨论】:

标签: c++ hex


【解决方案1】:

这是简单的 ASCII 操作。你看,大写字母 A 的 ASCII 值是 65,小写字母 a 是 97。如果你将 32(十六进制的 0x20)加到 65 上,你会得到 97,小写字母 a。

由于所有大写字母和所有小写字母都是连续排列的,因此您只需将 32 或 0x20 添加到任何大写字母即可得到小写字母。

【讨论】:

  • @Theo 当然,这与tolower() 不完全相同,因为如果字符已经是小写(或者,实际上是任何非大写字符),这将不起作用,它可能会产生在这种情况下是不可打印的字符,但绝对不是您想要的。
猜你喜欢
  • 2011-03-17
  • 1970-01-01
  • 2019-08-26
  • 2010-11-17
  • 2013-09-09
  • 2011-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多