hexadecimal or binary to int c++

#include <iostream>
#include <string>
#include <cmath>

int hexCharToInt(char hexChar) {
    if (hexChar >= '0' && hexChar <= '9') {
        return hexChar - '0';
    } else if (hexChar >= 'A' && hexChar <= 'F') {
        return hexChar - 'A' + 10;
    } else if (hexChar >= 'a' && hexChar <= 'f') {
        return hexChar - 'a' + 10;
    } else {
        return -1; // Invalid hex character
    }
}

int hexToDecimal(const std::string& hex) {
    int decimal = 0;
    int power = 0;

    for (int i = hex.size() - 1; i >= 0; --i) {
        int digitValue = hexCharToInt(hex[i]);
        if (digitValue == -1) {
            return -1; // Invalid hex string
        }

        decimal += digitValue * pow(16, power);
        ++power;
    }

    return decimal;
}

int binaryToDecimal(const std::string& binary) {
    int decimal = 0;
    int power = 0;

    for (int i = binary.size() - 1; i >= 0; --i) {
        if (binary[i] == '1') {
            decimal += pow(2, power);
        } else if (binary[i] != '0') {
            return -1; // Invalid binary string
        }

        ++power;
    }

    return decimal;
}

int main() {
    std::string hexInput, binaryInput;

    // Input hexadecimal string
    std::cout << "Enter a hexadecimal number: ";
    std::cin >> hexInput;

    // Convert hexadecimal to decimal
    int decimalFromHex = hexToDecimal(hexInput);
    if (decimalFromHex != -1) {
        std::cout << "Decimal equivalent: " << decimalFromHex << std::endl;
    } else {
        std::cout << "Invalid hexadecimal input." << std::endl;
        return 1;
    }

    // Input binary string
    std::cout << "Enter a binary number: ";
    std::cin >> binaryInput;

    // Convert binary to decimal
    int decimalFromBinary = binaryToDecimal(binaryInput);
    if (decimalFromBinary != -1) {
        std::cout << "Decimal equivalent: " << decimalFromBinary << std::endl;
    } else {
        std::cout << "Invalid binary input." << std::endl;
        return 1;
    }

    return 0;
}