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
помните, что она напрямую модифицирует строку. Если важно сохранить исходный регистр строки, всегда работайте с копией.
Смотрите также
- Справочник C++ по
std::transform
: https://en.cppreference.com/w/cpp/algorithm/transform - Справочник C++ по
toupper
: https://en.cppreference.com/w/cpp/string/byte/toupper - Обзор диапазонов C++20: https://en.cppreference.com/w/cpp/ranges