Как правильно перебрать строку 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*
нить
Также обратите внимание, что «поврежденные» значения на выходе не совпадают при каждом выбросе и появляются только в конце, почему? заранее спасибо