(C ++) Как определить, когда каждое значение после первого в строке является прописным или строчным - PullRequest
0 голосов
/ 20 марта 2020

Мне нужно взять любую строку, например 'Lollipop', и код должен увидеть, является ли каждое значение после первой буквы заглавными или нет. Если каждое значение в верхнем регистре, мне нужно увеличить внешнюю переменную на 1. Я не уверен, как это сделать, так как длина строки может варьироваться. Введенное слово имеет ограничение 2-10 символов, и первая буква должна начинаться с заглавной буквы. Я сделал это, просто выполнив stringName (0) == диапазон Ascii для верхнего регистра. Я просто понятия не имею, как проверить остальную часть строки, чтобы увидеть, является ли она полностью строчной или нет. Код может использовать только iostream и string. Спасибо

Ответы [ 2 ]

1 голос
/ 20 марта 2020

Вы можете использовать std::isupper() и std::all_of(), чтобы сделать код более компактным:

#include <string>
#include <algorithm>
#include <cctype>

bool isStrUpperCase(const std::string& str) {
    const auto start = std::next(str.begin());
    // skip first character, you'll have to make sure
    // your string has at least two characters!
    return std::all_of(start, str.end(),
        [](const char c){ return std::isupper(c) != 0; });
}
0 голосов
/ 20 марта 2020

Принимая ответ @Gokul, который не является полностью правильным:

bool checkForAllUppercase(std::string str) {
    int counter = 0;
    for (int i = 0; i < str.size(); i++){
        if (isupper(str[i])) 
          counter++;
        else 
          return false; // you can leave the for-loop if you find the first not upper-case letter
    }
    if (counter == str.size())  // check if all values where upper case
        return true;
    else 
          return false;
    return false;
}

int main() {
    ...
    if(checkForAllUppercase(exastr))
        variable++;
}

Я написал функцию, которая возвращает истину, если все буквы в верхнем регистре, и ложь, если нет. Пример использования показан также

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...