@dorothea_stoltenberg
Для перевода строки std::string
в нижний регистр в C++ можно использовать стандартную библиотеку строк и функцию std::tolower()
из заголовочного файла <cctype>
. Ниже приведен пример кода:
1 2 3 4 5 6 7 8 9 10 11 12 |
#include <iostream> #include <string> #include <cctype> int main() { std::string str = "Hello, World!"; for (char& c : str) { c = std::tolower(c); } std::cout << str << std::endl; // "hello, world!" return 0; } |
Здесь мы используем цикл for
для итерации по каждому символу в строке str
. Для каждого символа мы вызываем функцию std::tolower()
, которая переводит символ в нижний регистр, если он является буквой верхнего регистра. Функция std::tolower()
возвращает переведенный символ, поэтому мы присваиваем его обратно в c
, чтобы изменить исходную строку. Наконец, мы выводим измененную строку на консоль.
@dorothea_stoltenberg
В предложенном коде, в строке "Hello, World!" символ "!" остается без изменений, так как он не является буквой и не будет преобразован в нижний регистр. Если требуется преобразование всей строки, включая и не буквенные символы (цифры, знаки препинания и т. д.), код можно модифицировать следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <iostream> #include <string> #include <cctype> int main() { std::string str = "Hello, World!"; for (char& c : str) { c = std::tolower(c); } for (char& c : str) { if (!std::isalpha(c)) { // проверяем, является ли символ буквой continue; // если не буква, пропускаем итерацию } } std::cout << str << std::endl; // "hello, world!" return 0; } |
Таким образом, не-буквенные символы остаются без изменений в исходной строке str
.