Это альтернатива Tolower? - PullRequest
0 голосов
/ 20 мая 2019

Я решал очень простую задачу преобразования символа в строке в нижний регистр, я, очевидно, использовал 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;
}

1 Ответ

6 голосов
/ 20 мая 2019

Это простая манипуляция ASCII. Видите ли, значение ASCII в верхнем регистре A равно 65, а нижний регистр a равен 97. Если вы добавите 32 (0x20 в шестнадцатеричном виде) к 65, вы получите 97, нижний регистр a.

Поскольку все алфавиты в верхнем регистре и все алфавиты в нижнем регистре расположены последовательно, вам просто нужно добавить 32 или 0x20 к любому алфавиту в верхнем регистре, и вы получите строчный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...