Мне нужно преобразовать только буквы в строке в верхний регистр, и я попробовал этот фрагмент кода, который выдает ошибку.
s = "Dense-123-Sparse-999"
std::transform(s.begin(), s.end(), s.begin(), std::toupper);
Ожидаемый результат: DENSE-123-SPARSE-999.
Ошибка: непустая лямбда не возвращает значение во всех путях управления [-Werror,-Wreturn-type]
Выдает ошибку, так как во входной строке есть цифры. Как написать лямбда-функцию, которая преобразует символы в верхний регистр, только если они являются алфавитом, а не числом?
что-то вроде этого,
transform_if(s.begin(), s.end(), s.begin, [](char c){ if(isalpha(c)return toupper(c);});
так как C++ не имеет transform_if, я ищу один лайнер с любыми другими командами.
é
илиà
или€
или°
или§
? Все они есть на моей AZERTY клавиатуре... - person Basile Starynkevitch   schedule 10.12.2020