34 #include <string_view> 44 return not std::isalnum(ch, std::locale{});
56 return std::tolower(ch, std::locale{});
81 auto filtered_str{ str | std::views::filter(
lowercase) };
82 return std::ranges::equal(filtered_str, filtered_str|std::views::reverse,
92 std::locale::global(std::locale{
""});
93 std::cin.imbue(std::locale{});
94 std::cout.imbue(std::locale{});
96 for (std::string line{}; std::getline(std::cin, line); )
98 std::cout << line <<
'\n';
bool is_same_char(char a, char b)
Compares two characters without regard to case.
bool non_letter(char ch)
Tests for non-letter.
char lowercase(char ch)
Converts to lowercase.
bool is_palindrome(std::string_view str)
Determines whether str is a palindrome.