Задача преобразовать число с двоичной системы счисления в десятичную

Пыталась написать программу, которая преобразует число с двоичной системы в десятичную и все никак не выходит. Знаю, что проблема вроде в несовместимости типов параметров в функции strlen, не знаю как исправить, все время ошибки.

    #include <iostream>
    #include <cstring>
    #include <cmath>
    #include <cstdio>
    #include <cstdlib>
    
    using namespace std;
    
    int main() {
        setlocale(LC_ALL, "RUSSIAN");
        char* num;
        int sum = 0;
        cout << "Введите двоичное число" << endl;
        cout << num << endl;
        const char* count = strlen(num);
        for (int a = 0; a <= count; a++) {
            sum += (pow(2, a) * num[a]);
            return 0;
        }
        cout << sum;
    }

Ответы (2 шт):

Автор решения: AR Hovsepyan

У вас ошибка не одна, и одна из них в том, что вы пытаетесь выводить не инициализированный указатель. Не стану долго объяснять. Можете делать так:

char num[32];
std::cout << "Введите двоичное число" << endl;
std::cin >> num;
unsigned  result = 0;
size_t size = strlen(num);

for (size_t i = 0; i < size; ++i)
{
    if (num[i] != '1' && num[i] != '0') {
        std::cerr << "invalid argument";
        return 0;
    }
    result |= (num[i] - '0') << (size - i - 1);
}
std::cout << result;
→ Ссылка
Автор решения: Mikhailo

Мой вариант, без всяких возведений в степень (правда, и без проверки правильности ввода):

int main() {
    cout << "Введите двоичное число" << endl;
    string num;
    cin >> num;
    int res = 0;

    for (char c : num) {
        res = res * 2 + c - '0';
        }

    cout << res;
    }

string num; можно заменить на массив типа char num[33];, только это небезопасно.

→ Ссылка