Как правильно перебрать строку char*? Получение "поврежденных" значений

Когда я пытался перебрать число (преобразованное в двоичное с помощью библиотеки битовых наборов), мне удалось это решение

      #include <iostream>
#include <bitset>

void iterateBinary(int num) {
    char *numInBinary = const_cast<char*>(std::bitset<32>(num).to_string().c_str());

    for (int i = 31; i >= 0; i--) {
        char bit = numInBinary[i];
        std::cout << i << ": " << bit << std::endl;
    }
}

Но основал эти странные символы в выводе

Я уже реализовал решение своей первоначальной идеи с помощью for (char bit : numInBinary)и без c_str()преобразование, но мне все еще любопытно, что произошло (может быть, проблемы с памятью?) или что может быть лучшим способом повторения char*нить

Также обратите внимание, что «поврежденные» значения на выходе не совпадают при каждом выбросе и появляются только в конце, почему? заранее спасибо

0 ответов

Другие вопросы по тегам