这是tolower的替代品吗?

The*_*heo -2 c++ hex

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

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

对问题的引用: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;
}
Run Code Online (Sandbox Code Playgroud)

Fai*_*ash 6

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

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