Ваше предположение, что char('0') == int(0)
и char('1') == int(1)
просто не верны.В ASCII эти символы имеют значения 48 и 49.
То, что вы должны сделать, чтобы получить целочисленные значения цифровых символов, это субстрат '0'
вместо простого приведения (raw_string_int[x] = raw_string_char[x] - '0';
).
Я думаю, что у вас есть концептуальные проблемы, хотя.Массив не может быть заполнен допустимыми значениями до конца (соответствующая C-строка по крайней мере будет содержать нулевой терминатор, который не является допустимым двоичным символом).Вы можете использовать метод строки size()
, чтобы узнать, сколько символов содержит строка.Естественно, вы рискуете переполнить буфер, если строка binary
содержит size
символов или более.
Если вы хотите проверить, является ли ввод действительным двоичным числом, почему вы не можете проверить исходную строку, зачем копировать данные в еще два массива?