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

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

Как:

C++ предлагает различные способы преобразования строки в верхний регистр, но вот простой пример:

#include <iostream>
#include <algorithm>
#include <string>

std::string capitalizeString(std::string str) {
    std::transform(str.begin(), str.end(), str.begin(), ::toupper);
    return str;
}

int main() {
    std::string text = "Hello, World!";
    std::string capitalizedText = capitalizeString(text);
    std::cout << capitalizedText << std::endl;
    return 0;
}

Пример вывода:

HELLO, WORLD!

Глубокое погружение

Чтобы сделать все символы строки заглавными в C++, исторически мы использовали цикл для итерации по каждому символу, применяя функцию toupper из <cctype>.

По мере развития C++, Стандартная Библиотека Шаблонов (STL) предоставила такие алгоритмы, как std::transform, которые могут применять функцию ко всей последовательности. Этот стиль способствует более чистому коду и потенциально лучшей производительности благодаря алгоритмическим оптимизациям.

Помимо std::transform, есть также возможность использования диапазонов (начиная с C++20), что делает код еще более кратким и выразительным. Но это тема для другого разговора.

Альтернативы преобразования строк включают написание собственной функции или использование внешних библиотек, например, Boost. Все зависит от того, сколько контроля вам нужно и какие зависимости вы готовы принять.

При использовании std::transform помните, что она напрямую модифицирует строку. Если важно сохранить исходный регистр строки, всегда работайте с копией.

Смотрите также