Преобразование в верхний и нижний регистр в C++

Класс C++ String предоставляет огромное количество встроенных функций для выполнения операций над входной строкой.

В этом руководстве мы углубимся в преобразование входной строки в нижний и верхний регистр в C++.

Преобразование строки в верхний регистр

Язык C++ String имеет встроенную функцию toupper() для преобразования входной строки в верхний регистр.

Ее синтаксис выглядит так:

toupper(input_string)

Взгляните на следующий пример:

#include <iostream>
#include <cstring>


using namespace std;

int main()
{
    char arr[] = "Engineering Discipline.";

    cout << "Original String:\n"<< arr<< endl;
    cout<<"String in UPPERCASE:\n";
    for (int x=0; x<strlen(arr); x++)
        putchar(toupper(arr[x]));
 
    return 0;
}

В приведенном выше фрагменте кода пакет cstring содержит функции, связанные со строками. Кроме того, там есть функция strlen(), которая используется для вычисления длины входной строки.

Метод putchar() необходим для отображения данных на экране/консоли.

Вывод будет выглядеть так:

Original String:
Engineering Discipline.
String in UPPERCASE:
ENGINEERING DISCIPLINE.

Преобразование вводимого символа в верхний регистр

Преобразовать символы/строки в верхний/нижний регистр можно даже с учетом значений ASCII входных символов.

  • Значения ASCII для строчных букв (a-z): 97–122
  • Для букв верхнего регистра (A-Z): 65–92

Посмотрим на следующий пример:

#include <iostream>
using namespace std;

int main()
{
   char X;
   cout<<"Enter a character:";
   cin>>X;
   X=X-32;
   cout<<"Converted character to UPPERCASE:";
   cout<<X;
   return 0;
}

Как видите, разница между ASCII-значениями для строчных и прописных букв составляет 32 (если от 97 отнять 6).

Следовательно, чтобы преобразовать входные данные в верхний регистр, нам нужно вычесть 32 из значения ASCII вводимого символа.

Enter a character:f
Converted character to UPPERCASE:F

Преобразование строки в нижний регистр

Класс C++ String имеет встроенную функцию tolower() для преобразования входной строки в нижний регистр.

Ее синтаксис выглядит так:

tolower(input)

К примеру, такой код:

#include <iostream>
#include <cstring>


using namespace std;

int main()
{
    char arr[] = "Engineering Discipline.";

    cout << "Original String:\n"<< arr<< endl;
    cout<<"String in lowercase:\n";
    for (int x=0; x<strlen(arr); x++)
        putchar(tolower(arr[x]));

    return 0;
}

Вернет такой результат:

Original String:
Engineering Discipline.
String in lowercase:
engineering discipline.

Преобразование вводимого символа в нижний регистр

Посмотрите на этот пример:

#include <iostream>
using namespace std;

int main()
{
   char X;
   cout<<"Enter a character:";
   cin>>X;
   X=X+32;
   cout<<"Converted character to lowercase:";
   cout<<X;
   return 0;
}

Как вы уже знаете, разница между значениями верхнего и нижнего регистра составляет 32. Соответственно, нам нужно добавить 32 к значению ASCII входного символа, чтобы преобразовать его в нижний регистр.

Enter a character:R
Converted character to lowercase:r

Итоги

В этой статье мы рассмотрели преобразование символов и строк в нижний и верхний регистр в C++. В отношении методов ASCII важно отметить следующее: они просто преобразуют введенные символы в ASCII, а затем обратно. Если строка будет содержать числа, а не только буквы, вы получите неожиданный вывод.

Чтобы избежать подобных ошибок, вы можете либо обработать входные данные и убедиться, что введенные значения на самом деле являются символами, либо просто использовать функции toupper() и tolower().

Читайте также:

Tags:

Добавить комментарий