How to case-insensitively check if a character exists in a string with C++

2 Answers

0 votes
#include <iostream>
#include <algorithm>
#include <cctype>

bool CharExistCaseInsensitive(std::string s, char ch) {
    transform(s.begin(), s.end(), s.begin(), ::tolower);
    
    return s.find(tolower(ch)) != std::string::npos;
}

int main()
{
    std::string s = "C++ Programming";

    if (CharExistCaseInsensitive(s, 'P'))
        std::cout << "Found" << "\n";
    else
        std::cout << "Not Found" << "\n"; 
        
    if (CharExistCaseInsensitive(s, 'p'))
        std::cout << "Found" << "\n";
    else
        std::cout << "Not Found" << "\n"; 
}
 



/*
run:
 
Found
Found

*/

 



answered Sep 27, 2022 by avibootz
0 votes
#include <iostream>
#include <string>
#include <algorithm>
#include <cctype>

// Convert a character to lowercase
char toLowerChar(char ch) {
    return std::tolower(static_cast<unsigned char>(ch));
}

// Check if a character exists in a string (case-insensitive)
bool charExistsIgnoreCase(const std::string& s, char target) {
    char targetLower = toLowerChar(target);

    // Compare each character in the string after converting to lowercase
    return std::any_of(
        s.begin(),
        s.end(),
        [targetLower](char ch) {
            return toLowerChar(ch) == targetLower;
        }
    );
}

int main() {
    // Define the string we want to search in
    std::string s = "CppLanguage";

    // Perform the case-insensitive check
    bool exists = charExistsIgnoreCase(s, 'c');

    // Print the raw boolean result
    std::cout << std::boolalpha << exists << "\n";

    // Conditional check
    if (exists) {
        std::cout << "exists\n";
    } else {
        std::cout << "not exists\n";
    }
}


/*
run:

true
exists

*/

 



answered 8 hours ago by avibootz

Related questions

...