Вопрос:
У меня есть строка, которая может содержать числа, а также буквы верхнего и нижнего регистра. Мне нужно преобразовать все прописные буквы в нижний регистр и наоборот. Как это можно сделать?
Лучший ответ:
Итерируйте строку и используйте isupper(), чтобы определить, является ли каждый символ прописным или нет. Если он заглавный, преобразуйте его в нижний регистр, используя tolower(). Если он не заглавный, преобразуйте его в верхний регистр, используя toupper().
Ответ №1
Вот способ сделать это без повышения:
#include <string> #include <algorithm> #include <cctype> #include <iostream> char change_case (char c) { if (std::isupper(c)) return std::tolower(c); else return std::toupper(c); } int main() { std::string str; str = «hEllo world»; std::transform(str.begin(), str.end(), str.begin(), change_case); std::cout << str; return 0; } Ответ №2
Вы можете выполнить итерацию по строке и добавить или вычесть соответствующий номер из каждого альфа-символа, чтобы значение ASCII было разрешено для противоположного значения ASCII-кода.
Ответ №3char *str = «this is a test string»; while(*str != ‘